python爬取斗图啦表情包并下载到本地

迫于无聊,又恰好正在学习python,就来记录一篇关于python爬取图片连接下载本地的入门文章...html

主要用到的模块: requestBeautifulSoup4 开发以前建议先看一下官方给出关于这两个模块的文档node

开发环境:python

  • python3.6.6
  • vscode
  • node v8.10

不一样的python版本在部分代码上可能会有差别,请务必核对好版本...git

开发流程解析

第一步:须要经过request获取页面的源代码
response = requests.get(url, headers=header, timeout=30)
复制代码
第二步:分析页面结构

QQ截图20181225105322.png

经过上图发现,他的每个img标签的class都是img-responsive lazy image_dtagithub

那么咱们就能够直接经过bs4的find_all属性将其取出...数组

datas = soup.find_all(
        name="img", attrs={"class": "img-responsive lazy image_dta"})
复制代码

由于find_all取出的是一个数组,那么咱们就须要去进行循环读取每一个img标签学习

for data in datas:
        print("downloading:", data.attrs['data-original'])
        request.urlretrieve(
            data.attrs['data-original'], downPath+'\%s.jpg' % time.time())
复制代码

这边用的是request.urlretrieve进行资源下载...优化

须要注意的是,通常来说咱们都是去获取图片的src属性,可是因为这个网站使用了图片延时加载,因此咱们直接获取src的话就取到他默认的图片,这边咱们能够看到img的data-original属性是包含了图片的路径的,因此咱们就直接取data-original就能够了....网站

最后main方法执行...ui

if __name__ == '__main__':
    pool = ThreadPool(4)
    urls = [
        "http://www.doutula.com/photo/list/?page={}".format(str(i)) for i in range(1, 3)]
    pool.map(getImg, urls)
    pool.close()
    pool.join()
复制代码

这边运用了线城池进行简单的代码优化,后面会加入代理池和队列进行优化。

代码地址:python爬取表情包并下载到本地

若是代码有帮助到您,记得点个start哦~~~

相关文章
相关标签/搜索