admin管理员组文章数量:1122853
前期准备
需要下好一些包:
- request
- urllib3
- PyQuery
安装教程有很多,我就不过多描述了
值得一提的是PyQuery可以使用类似CSS选择器的方式选择标签,大大的提高了选择标签的效率
我使用了递归爬取组图只需要传入组图的第一页地址,和找到下一页地址就可以递归爬取了,直接看代码吧
import requests
import os
import time from requests.packages
import urllib3 from pyquery
import PyQuery as pq
def getNextPageUrl(doc):
linkList=doc("a")
nextUrl=""
for item in linkList.items():
a=item.text().strip()
temp=a[0:3]
# print(temp)
if temp=="下一页":
# print(temp)
nextUrl=item.attr('href')
return nextUrl
def getAllImgByUrl(url,savePath):
#请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) '
'AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/58.0.3029.110 Safari/537.36'
}
urllib3.disable_warnings()
re= requests.get(url, headers=headers, verify=False)
re.encoding='utf-8'
html = re.text
# print(html)
doc = pq(html)
a = doc('img')#获取所有图片标签 也可以通过选择器只选到我们想要的图片
nextUrl=getNextPageUrl(doc)
print(nextUrl)
flag=0#标记这一页已爬取的图片数,如果大于4则认为这一页已经爬取过,跳过这一页
for item in a.items():
d = item.attr('data-original') #获取图片的下载路径,有的下载地址使用的可能是src属性
if d==None:
break
path=savePath+d.split('/')[-1]
print(path)
try:
if not os.path.exists(savePath):
os.mkdir(savePath)
if not os.path.exists(path):
r=requests.get(d, headers=headers, verify=False)
r.encoding='utf-8'
with open(path,'wb')as f:
f.write(r.content)
f.close()
# print("文件保存成功",'\n','\n')
else:
print("文件已存在")
flag=flag+1
if flag>3:
print("跳过这一页")
break
except:
print("爬取失败")
getAllImgByUrl(nextUrl,savePath)
if __name__ == '__main__':
url="https://www.mzitu/"#组图第一页
getAllImgByUrl(url,"D://fulitu//test//")
版权声明:本文标题:爬虫递归爬取图片-自动翻页(可直接套用) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1726434413a1096058.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论