【问题标题】:Webscraping: Downloading a pdf from a javascript link网页抓取:从 javascript 链接下载 pdf
【发布时间】:2019-02-16 22:56:20
【问题描述】:

我正在使用python 中的requests 库,并试图抓取一个包含大量.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")

理想情况下,我想要一种方法来找到它将导航到的 url。我可以使用selenium 并单击链接,但是有很多文档,这将是时间和资源密集型的。有没有办法使用requests 或类似的库来做到这一点?

编辑:看起来每个链接都指向相同的 url,根据您单击的链接加载不同的 pdf。这让我觉得在requests 中没有办法做到这一点,但我仍然对非基于硒的东西抱有希望。

【问题讨论】:

  • 链接有
  • 不,他们没有。完整的html是<a href='javascript:readfile2("F","2201","2017_2201_20170622F14.pdf");'>2017_2201_20170622F14.pdf</a>

标签: python web-scraping python-requests


【解决方案1】:

这些 PDF 文件可能存在一个默认 URL。

您需要找出这些 pdf 文件在单击超链接后打开的 url。

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

之后,您将 pdf 名称附加到 url(存在 pdf 的位置)。并请求最终的 url。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2020-08-08
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多