本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
自从小白我学习了Python,就对各种妹子图比较感兴趣,哦,不,是对爬取妹子图感兴趣。小白我计划写一个爬取妹子图系列。上一篇,我们爬取了妹子图mzitu网站,收获满满,这篇,我们对另外一个制作精美的妹子图网站进行爬取,希望大家能够对Python语言学习感兴趣。
网站长这个样子
页面分析
1、通过一直点击 下一页 可以看到网站内的全部套图
2、通过爬取单个页面,可以获取到套图的首页地址、标题、发布日期
3、单个套图内图片上右键 -> 查看元素 即可拿到当前图片的地址和下一页图片的网页地址。方法还是比较简单。
这样,就可以得到我们想要的资源。
关键源码
构造每个page的URL
-
i =
2
-
while i <
5:
# 限制爬取页数
-
url = root_url +
'list_10_' + str(i) +
'.html'
# https://www.mmonly.cc/mmtp/xgmn/list_10_3.html
-
print(url)
-
self.urlManager.add_new_url(url)
-
i = i +
1
xpath解析单个套图
-
def parsePic(self, base_url,new_url,headers):
-
html_content = self.downloader.download_text(new_url, headers,
'gb2312')
-
if html_content
is
None:
-
return
None
-
# 存放数据
-
new_data=list()
-
ht = etree.HTML(html_content)
-
try:
-
nodes=ht.xpath(
'//div[@class="wrapper clearfix imgtitle"]/div[@class="big-pic"]/div/p/a')
-
for i
in range(len(nodes)):
-
node=nodes[i]
-
url=str(node.xpath(
'./@href')[
0])
-
img=str(node.xpath(
'./img/@src')[
0])
-
da = {
'referer': new_url,
'picUrl': img}
-
new_data.append(da)
-
url=
'https://www.mmonly.cc/mmtp/xgmn/'+url
-
if url.find(base_url)==
0:
# 找到了
-
ret=self.parsePic(base_url,url,headers)
-
if ret
is
not
None:
-
for data
in ret:
-
new_data.append(data)
-
except Exception
as e:
-
self.logger.error(e)
-
return new_data
下载图片资源并保存
-
for da
in new_data:
-
headers1[
'Referer']=da[
'referer']
-
url=da[
'picUrl']
-
pic =
'%s/%04d.jpg' % (randomstr, i)
-
artical.sourcePicList.append(url)
-
artical.picList.append(pic)
-
data = HtmlDownloader().download_bin(url,headers1)
-
if data
is
not
None:
-
fpath =
'%s%04d.jpg' % (path, i)
-
with open(fpath,
'wb')
as f:
-
f.write(data)
-
f.close()
-
self.logger.info(
'共 %s张,下载第 %s张图片成功:%s' % (length,i,url))
-
else:
-
self.logger.info(
'共 %s张,下载第 %s张图片失败:%s' % (length,i,url))
-
i=i+
1
爬取结果
总结
大家是不是已经学会了呢?非常简单。如果还有什么不懂的,欢迎联系小白我。
不过大家一定不要频繁去下载,据说会给服务器带来压力,会封帐号,以后就不能查看了。
最后提醒大家,一点要以学习为重,小白我下载到的所有图片已删除,希望大家多多学习,多做有意义的事情,谢谢大家。
获取完整源码,欢迎关注 80后老吴
转载:https://blog.csdn.net/wy_51131/article/details/110137819
查看评论