用Python 爬虫批量下载PDF文档

综合讨论 16167 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
更新
PDF的下载单位、IP信息已删除 (2025-6-4)

科研通是完全免费的文献互助平台,具备全网最快的应助速度,最高的求助完成率。 对每一个文献求助,科研通都将尽心尽力,给求助人一个满意的交代。
实时播报
刚刚
tian发布了新的文献求助10
刚刚
B2957发布了新的文献求助10
1秒前
刘小源完成签到 ,获得积分10
1秒前
1秒前
1秒前
2秒前
科研冲完成签到,获得积分10
2秒前
pcm发布了新的文献求助10
2秒前
2秒前
富贵发布了新的文献求助10
3秒前
852应助bilin采纳,获得10
3秒前
qian完成签到 ,获得积分10
3秒前
3秒前
小马甲应助阿涛采纳,获得10
3秒前
3秒前
3秒前
4秒前
cyrong发布了新的文献求助10
4秒前
量子星尘发布了新的文献求助10
4秒前
zhoumaoyuan发布了新的文献求助10
4秒前
5秒前
tian完成签到,获得积分10
5秒前
风趣的惜天完成签到 ,获得积分10
6秒前
你没事吧完成签到,获得积分10
6秒前
Wind应助bigpluto采纳,获得10
6秒前
6秒前
小小K发布了新的文献求助10
6秒前
7秒前
7秒前
Kart发布了新的文献求助10
7秒前
Duduk发布了新的文献求助10
7秒前
7秒前
7秒前
小北完成签到,获得积分10
8秒前
wwiee发布了新的文献求助10
8秒前
zuijiasunyou发布了新的文献求助10
8秒前
zxy发布了新的文献求助20
8秒前
李健的小迷弟应助111采纳,获得10
8秒前
格泽曜日完成签到,获得积分10
8秒前
热门帖子
关注 科研通微信公众号,转发送积分 5581856
求助须知:如何正确求助?哪些是违规求助? 4665999
关于积分的说明 14759982
捐赠科研通 4607956
什么是DOI,文献DOI怎么找? 2528430
邀请新用户注册赠送积分活动 1497713
关于科研通互助平台的介绍 1466585
最新评论
签到,评论就是签到了吗? 36分钟前
嘿嘿我要坚持签到挣积分 1小时前
感谢平台 4小时前
为什么没有高速通道? 6小时前
doi发我,你的邮箱发我。我有高速通道,下载后发你邮箱 7小时前
感谢平台! 15小时前
感谢平台 19小时前
什么网站 21小时前