使用网页抓取从网站下载多个 pdf

时间:2020-12-28 18:07:42

标签: python pdf web-scraping

大家好,我需要一些有关网络抓取工具的帮助,因为我想从 https://jbiomedsci.biomedcentral.com/ 下载 100 多个 pdf 文件,因为我正在尝试从网站下载尽可能多的生物医学 pdf 文件。我已经使用本网站的一些答案构建了网络爬虫,但似乎无法正常工作。

我的目标是下载 pdf 并将它们存储在特定文件夹中,如果您对此有任何帮助,我将不胜感激。

url1='https://ip-geolocation.whoisxmlapi.com/api/v1?apiKey=MyApiKey'
res = requests.request('GET', url1)
Jdata = res.json()
city = Jdata['location']['city']
completed_url = "http://api.openweathermap.org/data/2.5/weather? 
appid=myapiid&q="+city

r = requests.get(completed_url)
abcd = r.json()
abcdmain = abcd['main']

1 个答案:

答案 0 :(得分:1)

我已经修改了您的脚本以使其正常工作。当您尝试以下脚本时,它将在您的脚本所在的同一目录中创建一个文件夹,并将下载的 pdf 文件存储在新创建的文件夹中。

import os
import requests
from bs4 import BeautifulSoup

base = 'https://jbiomedsci.biomedcentral.com{}'
url = 'https://jbiomedsci.biomedcentral.com/articles'

res = requests.get(url)
soup = BeautifulSoup(res.text,"html.parser")

foldername = url.split("/")[-1]
os.mkdir(foldername)

for pdf in soup.select("a[data-track-action='Download PDF']"):
    filename = pdf['href'].split("/")[-1]
    fdf_link = base.format(pdf['href']) + ".pdf"
    with open(f"{foldername}/{filename}.pdf", 'wb') as f:
        f.write(requests.get(fdf_link).content)