本帖最后由 学海AoA无涯 于 2020-8-15 21:21 编辑
哈哈哈哈,第二个了AoA
学习了一下Xpath,原来Xpath是用于xml中的,,html是xml的儿子。。。又长知识了
上一篇 新人Python,第一只爬虫,,我就只会re.findall,你咬我?
感觉Xpath也有不中用的时候,还是需要与正则交替使用
难道我明天要学习一下Beautiful Soup??
我看别人都是自定义了函数的??有点上头
上代码,睡觉了[Python] 纯文本查看 复制代码 import requestsfrom lxml import etree
import re
import os
# 这个主要是为了学习Xpath的用法,嗯嗯呢呢~纯用正则表达式传送门[url=https://www.52pojie.cn/thread-1244292-1-1.html]https://www.52pojie.cn/thread-1244292-1-1.html[/url]
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)[0]) # 需要用正则找出图集中图片的总数量,Xpath准确率感觉不高
ID = totle_url.split("/")[4] # 按照URL的格式,以斜线分割,取出图集的ID
totle = etree.HTML(totle) # 因为这次主要是练习Xpath,所以接着转换,感觉我的代码有些凌乱呢??
title = totle.xpath('//div[@class="weizhi"]/h1/text()')[0] # 取出图集的标题
# 创建图集目录
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')
|