用Python 爬虫批量下载PDF文档

综合讨论 18226 6 1
flzt
flzt 发表于:2021-06-27 21:20:49

hello!我想请问一下大家有没用Python 爬虫批量下载PDF文档的代码可供参考一下?比如这个网站 https://data.eastmoney.com/report/macresearch.jshtml?orgcode=80894586的报告pdf能否统一下载呢?谢谢~


本帖完毕
回帖
  • 李健
    6楼
    李健 2021-07-01 16:25:15
    Y先生第一步,使用js代码把页面的url打印出来,代码是:
    let b = document.getElementsByTagName("tbody")[0].getElementsByTagName("a");
    let sum = "";
    for (var i = 0; i < b.length; i++) {
    if (b[i].innerText.length >= 6) { sum += b[i].href;
    sum += "\n" }
    }
    console.log(sum)
    第二步,把打印出的网址复制保存在文件夹中,使用requests库依次访问,获取每个网页对应pdf的url
    python代码:
    import requests as req
    import time
    from bs4 import BeautifulSoup
    from tqdm import tqdm

    all_pdf = []
    with open("./pdf_url.txt","r",encoding="utf-8") as f:
    web_url = [i.strip() for i in f.readlines()]
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54'}

    for url in tqdm(web_url):
    result = req.get(url,headers=header)
    bs_obj = BeautifulSoup(result.text, 'lxml')
    pdf_url = bs_obj.find_all(class_ ="pdf-link")[0].get("href")
    all_pdf.append(pdf_url)
    time.sleep(0.5)
    print(all_pdf)
    这样就可以获取所有的pdf链接,使用requests库继续获取所有的pdf就可以了
    python代码:
    import os
    if not os.path.exists("./pdf_results/"):os.mkdir("pdf_results")
    for index, pdf_url in tqdm(enumerate(all_pdf)):
    result = req.get(pdf_url, headers=header)
    with open(f"./pdf_results/{index}.pdf", "wb") as f:
    f.write(result.content)
    time.sleep(0.5)
    最终结果我也保存在百度云里了,分享给你

    链接:https://pan.baidu.com/s/16_QpPGWGpUvRwAiveQSO_g
    提取码:0000
    👍👍👍
  • Y先生
    5楼
    Y先生 2021-07-01 13:25:17
    Y先生第一步,使用js代码把页面的url打印出来,代码是:
    let b = document.getElementsByTagName("tbody")[0].getElementsByTagName("a");
    let sum = "";
    for (var i = 0; i < b.length; i++) {
    if (b[i].innerText.length >= 6) { sum += b[i].href;
    sum += "\n" }
    }
    console.log(sum)
    第二步,把打印出的网址复制保存在文件夹中,使用requests库依次访问,获取每个网页对应pdf的url
    python代码:
    import requests as req
    import time
    from bs4 import BeautifulSoup
    from tqdm import tqdm

    all_pdf = []
    with open("./pdf_url.txt","r",encoding="utf-8") as f:
    web_url = [i.strip() for i in f.readlines()]
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54'}

    for url in tqdm(web_url):
    result = req.get(url,headers=header)
    bs_obj = BeautifulSoup(result.text, 'lxml')
    pdf_url = bs_obj.find_all(class_ ="pdf-link")[0].get("href")
    all_pdf.append(pdf_url)
    time.sleep(0.5)
    print(all_pdf)
    这样就可以获取所有的pdf链接,使用requests库继续获取所有的pdf就可以了
    python代码:
    import os
    if not os.path.exists("./pdf_results/"):os.mkdir("pdf_results")
    for index, pdf_url in tqdm(enumerate(all_pdf)):
    result = req.get(pdf_url, headers=header)
    with open(f"./pdf_results/{index}.pdf", "wb") as f:
    f.write(result.content)
    time.sleep(0.5)
    最终结果我也保存在百度云里了,分享给你

    链接:https://pan.baidu.com/s/16_QpPGWGpUvRwAiveQSO_g
    提取码:0000
    flzt谢谢!👍
    不客气,互相帮助. btw我觉得这个网站挺不错的😝
  • flzt
    4楼
    flzt (楼主) 2021-07-01 09:07:39
    Y先生第一步,使用js代码把页面的url打印出来,代码是:
    let b = document.getElementsByTagName("tbody")[0].getElementsByTagName("a");
    let sum = "";
    for (var i = 0; i < b.length; i++) {
    if (b[i].innerText.length >= 6) { sum += b[i].href;
    sum += "\n" }
    }
    console.log(sum)
    第二步,把打印出的网址复制保存在文件夹中,使用requests库依次访问,获取每个网页对应pdf的url
    python代码:
    import requests as req
    import time
    from bs4 import BeautifulSoup
    from tqdm import tqdm

    all_pdf = []
    with open("./pdf_url.txt","r",encoding="utf-8") as f:
    web_url = [i.strip() for i in f.readlines()]
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54'}

    for url in tqdm(web_url):
    result = req.get(url,headers=header)
    bs_obj = BeautifulSoup(result.text, 'lxml')
    pdf_url = bs_obj.find_all(class_ ="pdf-link")[0].get("href")
    all_pdf.append(pdf_url)
    time.sleep(0.5)
    print(all_pdf)
    这样就可以获取所有的pdf链接,使用requests库继续获取所有的pdf就可以了
    python代码:
    import os
    if not os.path.exists("./pdf_results/"):os.mkdir("pdf_results")
    for index, pdf_url in tqdm(enumerate(all_pdf)):
    result = req.get(pdf_url, headers=header)
    with open(f"./pdf_results/{index}.pdf", "wb") as f:
    f.write(result.content)
    time.sleep(0.5)
    最终结果我也保存在百度云里了,分享给你

    链接:https://pan.baidu.com/s/16_QpPGWGpUvRwAiveQSO_g
    提取码:0000
    谢谢!👍
  • 团团
    板凳
    团团 2021-06-30 15:53:20
    Y先生第一步,使用js代码把页面的url打印出来,代码是:
    let b = document.getElementsByTagName("tbody")[0].getElementsByTagName("a");
    let sum = "";
    for (var i = 0; i < b.length; i++) {
    if (b[i].innerText.length >= 6) { sum += b[i].href;
    sum += "\n" }
    }
    console.log(sum)
    第二步,把打印出的网址复制保存在文件夹中,使用requests库依次访问,获取每个网页对应pdf的url
    python代码:
    import requests as req
    import time
    from bs4 import BeautifulSoup
    from tqdm import tqdm

    all_pdf = []
    with open("./pdf_url.txt","r",encoding="utf-8") as f:
    web_url = [i.strip() for i in f.readlines()]
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54'}

    for url in tqdm(web_url):
    result = req.get(url,headers=header)
    bs_obj = BeautifulSoup(result.text, 'lxml')
    pdf_url = bs_obj.find_all(class_ ="pdf-link")[0].get("href")
    all_pdf.append(pdf_url)
    time.sleep(0.5)
    print(all_pdf)
    这样就可以获取所有的pdf链接,使用requests库继续获取所有的pdf就可以了
    python代码:
    import os
    if not os.path.exists("./pdf_results/"):os.mkdir("pdf_results")
    for index, pdf_url in tqdm(enumerate(all_pdf)):
    result = req.get(pdf_url, headers=header)
    with open(f"./pdf_results/{index}.pdf", "wb") as f:
    f.write(result.content)
    time.sleep(0.5)
    最终结果我也保存在百度云里了,分享给你

    链接:https://pan.baidu.com/s/16_QpPGWGpUvRwAiveQSO_g
    提取码:0000
    点赞👍
  • 852
    椅子
    852 2021-06-28 12:03:35
    Y先生第一步,使用js代码把页面的url打印出来,代码是:
    let b = document.getElementsByTagName("tbody")[0].getElementsByTagName("a");
    let sum = "";
    for (var i = 0; i < b.length; i++) {
    if (b[i].innerText.length >= 6) { sum += b[i].href;
    sum += "\n" }
    }
    console.log(sum)
    第二步,把打印出的网址复制保存在文件夹中,使用requests库依次访问,获取每个网页对应pdf的url
    python代码:
    import requests as req
    import time
    from bs4 import BeautifulSoup
    from tqdm import tqdm

    all_pdf = []
    with open("./pdf_url.txt","r",encoding="utf-8") as f:
    web_url = [i.strip() for i in f.readlines()]
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54'}

    for url in tqdm(web_url):
    result = req.get(url,headers=header)
    bs_obj = BeautifulSoup(result.text, 'lxml')
    pdf_url = bs_obj.find_all(class_ ="pdf-link")[0].get("href")
    all_pdf.append(pdf_url)
    time.sleep(0.5)
    print(all_pdf)
    这样就可以获取所有的pdf链接,使用requests库继续获取所有的pdf就可以了
    python代码:
    import os
    if not os.path.exists("./pdf_results/"):os.mkdir("pdf_results")
    for index, pdf_url in tqdm(enumerate(all_pdf)):
    result = req.get(pdf_url, headers=header)
    with open(f"./pdf_results/{index}.pdf", "wb") as f:
    f.write(result.content)
    time.sleep(0.5)
    最终结果我也保存在百度云里了,分享给你

    链接:https://pan.baidu.com/s/16_QpPGWGpUvRwAiveQSO_g
    提取码:0000
    👍
  • Y先生
    沙发
    Y先生 2021-06-28 12:02:35
    第一步,使用js代码把页面的url打印出来,代码是:
    let b = document.getElementsByTagName("tbody")[0].getElementsByTagName("a");
    let sum = "";
    for (var i = 0; i < b.length; i++) {
    if (b[i].innerText.length >= 6) { sum += b[i].href;
    sum += "\n" }
    }
    console.log(sum)
    第二步,把打印出的网址复制保存在文件夹中,使用requests库依次访问,获取每个网页对应pdf的url
    python代码:
    import requests as req
    import time
    from bs4 import BeautifulSoup
    from tqdm import tqdm

    all_pdf = []
    with open("./pdf_url.txt","r",encoding="utf-8") as f:
    web_url = [i.strip() for i in f.readlines()]
    header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54'}

    for url in tqdm(web_url):
    result = req.get(url,headers=header)
    bs_obj = BeautifulSoup(result.text, 'lxml')
    pdf_url = bs_obj.find_all(class_ ="pdf-link")[0].get("href")
    all_pdf.append(pdf_url)
    time.sleep(0.5)
    print(all_pdf)
    这样就可以获取所有的pdf链接,使用requests库继续获取所有的pdf就可以了
    python代码:
    import os
    if not os.path.exists("./pdf_results/"):os.mkdir("pdf_results")
    for index, pdf_url in tqdm(enumerate(all_pdf)):
    result = req.get(pdf_url, headers=header)
    with open(f"./pdf_results/{index}.pdf", "wb") as f:
    f.write(result.content)
    time.sleep(0.5)
    最终结果我也保存在百度云里了,分享给你

    链接:https://pan.baidu.com/s/16_QpPGWGpUvRwAiveQSO_g
    提取码:0000
科研通是完全免费的文献互助平台,具备全网最快的应助速度,最高的求助完成率。 对每一个文献求助,科研通都将尽心尽力,给求助人一个满意的交代。
实时播报
杨禄圆完成签到,获得积分10
1秒前
上官若男应助kylorey采纳,获得10
1秒前
彭于晏应助归宁采纳,获得10
2秒前
Eric发布了新的文献求助10
2秒前
slp发布了新的文献求助10
2秒前
2秒前
研友_VZG7GZ应助很好采纳,获得10
3秒前
爱吃狼的小红帽完成签到 ,获得积分10
3秒前
Lu完成签到,获得积分10
3秒前
欸巧克力豆完成签到,获得积分10
3秒前
曾哥帅完成签到 ,获得积分10
3秒前
豆子发布了新的文献求助10
4秒前
4秒前
chnningji发布了新的文献求助10
4秒前
xiaohei完成签到,获得积分10
5秒前
打打应助we采纳,获得10
5秒前
5秒前
zqzqz发布了新的文献求助10
6秒前
8秒前
传奇3应助ksi采纳,获得30
9秒前
9秒前
9秒前
9秒前
小蘑菇应助青雉采纳,获得10
10秒前
酷炫冰夏完成签到,获得积分10
10秒前
郭郭发布了新的文献求助50
10秒前
12秒前
正直的怀亦完成签到,获得积分10
12秒前
12秒前
暖暖完成签到,获得积分10
13秒前
卓若之完成签到 ,获得积分10
13秒前
爱听歌的半凡完成签到,获得积分10
13秒前
科目三应助刘的花采纳,获得10
13秒前
ruby发布了新的文献求助10
14秒前
可爱的函函应助nnn采纳,获得10
14秒前
大饼发布了新的文献求助10
14秒前
tigerxhz发布了新的文献求助50
14秒前
15秒前
15秒前
香蕉觅云应助dorken采纳,获得10
15秒前
热门帖子
关注 科研通微信公众号,转发送积分 6412270
求助须知:如何正确求助?哪些是违规求助? 8231418
关于积分的说明 17470179
捐赠科研通 5465077
什么是DOI,文献DOI怎么找? 2887538
邀请新用户注册赠送积分活动 1864318
关于科研通互助平台的介绍 1702915
最新评论
可以在豆包搜索文献名称和DOI,然后在科研通下载文献 3小时前
感谢平台 5小时前
学习学习 5小时前
学习学习 17小时前
学习学习 20小时前
学习学习 1天前
学习学习 1天前
学习学习 1天前