python 网络爬虫之下载图片 学习心得

415次阅读
没有评论
python

爬取斗图 表情包 为例:

这是一个单线程的爬取下载图片的代码

import requests from lxml import etree from urllib import request import re

HEADERS = { 'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36' } def parse_page(url): #解析网页,并下载保存 response = requests.get(url=url,headers=HEADERS) text = response.text html = etree.HTML(text) a_s = html.xpath("//div[@class='page-content text-center']//a[@class='col-xs-6 col-sm-3']") for a in a_s: #解析图片的url img_url = a.xpath(".//img/@data-original")[0] #得到图片的名字 alt = a.xpath(".//img/@alt")[0] alt = re.sub(r'[??.。!!*@]','',alt) file_name = alt+'.jpg' #下载并保存图片 request.urlretrieve(url=img_url,filename='images/'+file_name) print(file_name+" 下载完成 ") def main(): #用for循环构建page_url for i in range(1,101): url = 'https://www.doutula.com/photo/list/?page=%d' %i parse_page(url)

if __name__ == '__main__': main()

学习心得:

1, 总体思路: 

  • 分析网页的URL:第一页:https://www.doutula.com/photo/list/?page=1                             第二页:https://www.doutula.com/photo/list/?page=2             改变的只有page =? 用for循环 构建 page_url 
  •   从每一个大的page_url  中提取 每一张图片的 img_url,,和 图片名字  file_name
  • 下载 图片  用python自带的urllib库中的request.urlretrive() 方法下载每一张图片
  • 2, file_name

               在得到图片名称时,因为包含非法字符 所以使用正则表达式 中的sub()函数提换为空。

    3,   下载图片

                用python自带的urllib库中的request.urlretrive() 方法下载每一张图片

    神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

    相关文章:

    版权声明:Python教程2022-10-24发表,共计1307字。
    新手QQ群:570568346,欢迎进群讨论 Python51学习