亲爱的研友该休息了!由于当前在线用户较少,发布求助请尽量完整的填写文献信息,科研通机器人24小时在线,伴您度过漫漫科研夜!身体可是革命的本钱,早点休息,好梦!

用Python 爬虫批量下载PDF文档

综合讨论 10713 6
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
更新
大幅提高文件上传限制,最高150M (2024-4-1)

科研通是完全免费的文献互助平台,具备全网最快的应助速度,最高的求助完成率。 对每一个文献求助,科研通都将尽心尽力,给求助人一个满意的交代。
实时播报
俏皮马里奥完成签到 ,获得积分10
1分钟前
1分钟前
桓某人发布了新的文献求助10
1分钟前
桓某人完成签到,获得积分10
1分钟前
Scrat完成签到,获得积分10
2分钟前
SciGPT应助秋刀鱼不过期采纳,获得10
2分钟前
Chris完成签到 ,获得积分0
2分钟前
小石榴爸爸完成签到 ,获得积分10
2分钟前
8R60d8应助科研通管家采纳,获得10
2分钟前
2分钟前
小石榴的爸爸完成签到 ,获得积分10
2分钟前
3分钟前
3分钟前
阿a发布了新的文献求助10
3分钟前
orixero应助小喽啰采纳,获得10
4分钟前
4分钟前
zhouleiwang发布了新的文献求助10
4分钟前
4分钟前
8R60d8应助科研通管家采纳,获得10
4分钟前
zhouleiwang完成签到,获得积分10
4分钟前
4分钟前
小喽啰发布了新的文献求助10
4分钟前
小喽啰完成签到,获得积分10
5分钟前
wanci应助mwang采纳,获得10
5分钟前
荣誉完成签到,获得积分10
5分钟前
taku完成签到 ,获得积分10
5分钟前
小马甲应助枯藤老柳树采纳,获得10
5分钟前
6分钟前
mwang发布了新的文献求助10
6分钟前
6分钟前
factor发布了新的文献求助10
6分钟前
6分钟前
大个应助factor采纳,获得10
6分钟前
6分钟前
赘婿应助枯藤老柳树采纳,获得10
6分钟前
苗苗子子完成签到,获得积分10
6分钟前
mwang完成签到,获得积分10
6分钟前
6分钟前
6分钟前
7分钟前
热门帖子
关注 科研通微信公众号,转发送积分 3137011
求助须知:如何正确求助?哪些是违规求助? 2787970
关于积分的说明 7784214
捐赠科研通 2444073
什么是DOI,文献DOI怎么找? 1299719
科研通“疑难数据库(出版商)”最低求助积分说明 625497
版权声明 600997
最新评论
非常有用 10小时前
60%乙醇 11小时前
这个网站真的好方便,有求必应,速度极快,文献下载再也不愁了,推荐大家收藏使用。 12小时前
这篇论文里有中文版图片:基于二维半导体材料光电器件的研究进展。知网可以下到。 原版图片的话,是这篇:Progress, Challenges, and Opportunities for 2D material based photodetectors 14小时前
找不到的文献都能在这里找到 14小时前
下载文献很方便 19小时前
特别适合科研人 科研人的好帮手 1天前
很好用,适合科研人 1天前