爬取斗图 表情包 为例:
这是一个单线程的爬取下载图片的代码
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, 总体思路:
2, file_name
在得到图片名称时,因为包含非法字符 所以使用正则表达式 中的sub()函数提换为空。
3, 下载图片
用python自带的urllib库中的request.urlretrive() 方法下载每一张图片
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试