网站抓取:从JavaScript链接下载pdf

时间:2018-09-12 10:17:30

标签: python web-scraping python-requests

我正在使用requests中的python库,并尝试抓取一个包含大量.pdf格式的公共报告和文档的网站。我已经在其他网站上成功做到了这一点,但在这个网站上遇到了一个麻烦:链接是javascript函数(对象?我对JavaScript一无所知)将我重定向到另一页,原始pdf链接。像这样:

import requests
from bs4 import BeautifulSoup as bs

url = 'page with search results.com'
html = requests.get(url).text
soup = bs(html)
obj_list = soup.findAll('a')
for a in obj_list: 
    link = a['href']
    print(link)

>> javascript:readfile2("F","2201","2017_2201_20170622F14.pdf")

理想情况下,我想找到一种方法来查找此网址。我可以使用selenium并单击链接,但是有很多文档,这会占用大量时间和资源。是否可以使用requests或类似的库来做到这一点?

编辑:看起来每个链接都指向相同的URL,根据您单击的链接,它会加载不同的pdf。这使我认为requests中没有办法做到这一点,但我仍然对某些非基于硒的方法抱有希望。

1 个答案:

答案 0 :(得分:0)

可能存在这些PDF文件的默认网址。

您需要找到URL,单击超级链接后,这些pdf文件将在其上打开。

获得该网址后,您需要从锚文本中解析pdf名称。

然后,在pdf名称后附加url(存在pdf)。并请求最终网址。