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



大家好,我需要一些关于我的网络刮刀的帮助,因为我想从https://jbiomedsci.biomedcentral.com/因为我正试图从网站上下载尽可能多的生物医学PDF。我已经用这个网站上的一些答案建立了网络抓取器,但我似乎无法让它正常工作。

我的目标是下载PDF并将其存储在特定的文件夹中,如果能提供任何帮助,我将不胜感激。

url="https://jbiomedsci.biomedcentral.com/articles"
response = request.urlopen(url).read()
soup= BeautifulSoup(response, "html.parser")     
links = soup.find_all('a', href=re.compile(r'(.pdf)'))

url_list = []
for el in links:
if(el['href'].startswith('http')):
url_list.append(el['href'])
else:
url_list.append("https://jbiomedsci.biomedcentral.com" + el['href'])
print(url_list)

for url in url_list:
print(url)
pathname ="C:/Users/SciencePDF/"
fullfilename = os.path.join(pathname, url.replace("https://jbiomedsci.biomedcentral.com/articles", 
""))
print(fullfilename)
request.urlretrieve(url, fullfilename)

我已经修改了您的脚本使其工作。当您尝试以下脚本时,它将在脚本所在的同一目录中创建一个文件夹,并将下载的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)

最新更新