图集谷爬虫,采用Xpath的方法。
本帖最后由 学海AoA无涯 于 2020-8-15 21:21 编辑https://static.52pojie.cn/static/image/hrline/2.gif
哈哈哈哈,第二个了AoA
学习了一下Xpath,原来Xpath是用于xml中的,,html是xml的儿子。。。又长知识了
上一篇新人Python,第一只爬虫,,我就只会re.findall,你咬我?
感觉Xpath也有不中用的时候,还是需要与正则交替使用
难道我明天要学习一下Beautiful Soup??
我看别人都是自定义了函数的??有点上头
https://static.52pojie.cn/static/image/hrline/1.gif
上代码,睡觉了import requestsfrom lxml import etree
import re
import os
# 这个主要是为了学习Xpath的用法,嗯嗯呢呢~纯用正则表达式传送门https://www.52pojie.cn/thread-1244292-1-1.html
headers = {
'User-Agent': 'Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
search = input('需要一个女朋友啊~~~ :')
searchpage = requests.get('https://www.tujigu.com/search/' + search, headers=headers).text
searchpage = etree.HTML(searchpage) # 觉得要用Xpath,需要先进行格式化操作
pageurls = searchpage.xpath('//div[@class="hezi"]//li/a/@href') # 使用Xpath获取搜索页的每个图集的URL地址
for totle_url in pageurls:
totle = requests.get(totle_url, headers=headers).content.decode('utf-8')
picnum = int(re.findall("<p>图片数量: (.*?)P</p>", totle)) # 需要用正则找出图集中图片的总数量,Xpath准确率感觉不高
ID = totle_url.split("/") # 按照URL的格式,以斜线分割,取出图集的ID
totle = etree.HTML(totle) # 因为这次主要是练习Xpath,所以接着转换,感觉我的代码有些凌乱呢??
title = totle.xpath('//div[@class="weizhi"]/h1/text()') # 取出图集的标题
# 创建图集目录
path = '图集谷\\' + title # 设置输出文件夹
if not os.path.exists(path): # 判断文件夹不存在
os.makedirs(path) # 不存在则建立文件夹
print('目录创建完成(*^v^*),记得设置为隐私文件哦^_^!')
else :
print('目录已创建(-o⌒)=3!!,一看就是老绅士了 ╭∩╮ ')
# 开始下载图片
print(title)
for i in range(1, picnum+1):
picurl = "https://lns.hywly.com/a/1/" + ID + '/' + str(i) + '.jpg' # 单个图片URL地址的拼接
print('(≧^.^≦)喵~~~正在下载:' + picurl)
pic = requests.get(picurl).content
with open('%s\%s.jpg'%(path, i), 'wb') as f:
f.write(pic)
print(title + '\n下载完成!\n\n')
本帖最后由 学海AoA无涯 于 2020-8-15 15:58 编辑
寒塘鹤影 发表于 2020-8-15 10:58
tianshimeitu.com可以看看
在工地搬砖(没那么夸张??*(???╰?╯????)??),,手机上面看了一下网页源码,简单分析了一下,用手机写的,,能够下载这个网站的图片,,晚上回家拿电脑具体分析
您这个付费,我这初学者也不会啊
https://static.52pojie.cn/static/image/hrline/2.gif
import requests
import os
headers = {
'User-Agent': 'Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
# 开始下载图片
for i in range(1, 10000):
picurl = 'https://gitee.com/kevin2046/pict/raw/master/img/' + str(i) + '.jpg' # 单个图片URL地址的拼接
print('(≧^.^≦)喵~~~正在下载:' + picurl)
pic = requests.get(picurl).content
with open(str(i) +'.jpg', 'wb') as f:
f.write(pic)
print(picsname + '\n下载完成!\n\n')
neilchou 发表于 2020-8-15 09:42
现在在参加单片机比赛的培训,看代码看无聊了来逛逛,正好看到大佬的帖子,之前看到另一个大佬写的,闪退 ...
之前那个闪退的原因是,我在输出的时候插入了颜文字,,你把print语录里面的颜文字删了就行了,或者用IDE打开,不要直接双击,,另外,保存目录好像有问题,复制代码的时候好像出错了 谢谢分享 感谢兄弟的分享精神! 有没有类似图集谷的了{:1_918:} 看起来这个虫子不错,不知效果怎么样 大佬,大佬,真是dior 感謝大大分享 小白收下 你们这些会正则的人 就是牛逼 十分感谢大佬