Python结合冰点下载工具批量下载文档

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文件如下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39098563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值