Python结合冰点下载工具批量下载文档
先解释一下etree和XPath 配合使用
# lxml-etree读取文件
from lxml import etree
html = etree.parse('demo01.html', etree.HTMLParser())
print(type(html)) # <class 'lxml.etree._ElementTree'> 返回节点树
# 查找所有 li 节点
rst = html.xpath('//li') #//代表在任意路径下查找节点为li的所有元素
print(type(rst)) # ==><class 'list'>
print(rst) # ==> [<Element li at 0x133d9e0>, <Element li at 0x133d9b8>, <Element li at 0x133d990>] 找到的所有符合元素的li节点
# 查找li下带有 class 属性值为 one 的元素
rst2 = html.xpath('//li[@class="one"]')
print(type(rst2)) # ==> <class 'list'>
print(rst2) # ==>[<Element li at 0x35dd9b8>]
# 查找li带有class属性,值为two的元素,下的div元素下的a元素
rst3 = html.xpath('//li[@class="two"]/div/a') # <class 'list'>
rst3 = rst3[0] #选中res3列表中的第一个元素
print('-------------\n',type(rst3)) # ==><class 'lxml.etree._Element'>
print(rst3.tag) # ==>输出res3的标签名
print(rst3.text) # ==> 输出res3中的文本内容
————————————————
摘自 https://blog.csdn.net/qq_35208583/article/details/89041912
2、批量爬取下载链接,搜索的内容是大学生心理健康试题
import requests
from lxml import etree
def get_paper_link():
doc_links2 = [] #用来存储爬到的链接
for i in range(1,75): #共有75页,可以在链接的参数pn中输入最大的参数10000测试得到750,页码是750/10
url='https://wenku.xxx.com/search/main?pv=search&word=大学生心理健康试题8&org=0&fd=0&lm=0&od=0&ie=gbk&pn='+str(i*10)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76'
}
res1=requests.get(url,headers=headers).text #获取html内容
html_xpath=etree.HTML(res1)
doc_links=html_xpath.xpath('//p[@class="fl"]/a/@href') #获取html内容里面的对应大学生心理健康试题的链接 lxml的使用见上述
for link in doc_links:
if str('https') in link: #检查元素中包含https开头的链接,不是https开头的链接是无效链接,应该去掉
doc_links2.append(link)
#print(doc_links2)
doc_links2=deleteDuplicatedElementFromList3(doc_links2) #去掉链接中重复的内容,借助sort函数的特性
f=open('test2.txt','w') #把链接写到当前目录的test2.txt的问题中,已备冰点需要的批量下载文件
for urls in doc_links2:
f.write(urls+'\n')
f.close()
return doc_links2
def deleteDuplicatedElementFromList3(listA):
#return list(set(listA))
return sorted(set(listA), key = listA.index)
get_paper_link()
3、用冰点下载,在菜单中选择生成的test2.txt文本,于是可以愉快的下载了
4、生成的pdf文件和txt文件如下