【问题标题】:Python: Get javascript file from href tag of htmlPython:从html的href标签获取javascript文件
【发布时间】:2017-01-16 20:07:07
【问题描述】:

考虑一个类似的网站:

http://a810-bisweb.nyc.gov/bisweb/COsByLocationServlet?requestid=1&allbin=3055311

如您所见,该网站包含指向页面源代码中的 href 标记引用的 pdf 文件的链接,例如:

<a href="javascript:$('form_cofo_pdf_view_B000114563.PDF').submit();">B000114563.PDF</a>

我想使用 python 打开底层文件,有效地抓取结果。

req = urllib2.Request("link.com")
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)

links = []
for link in soup.findAll('a'):
    links.append(link.get("href"))

通常我只会将基本 url 与 href url 连接起来以获取文档,但在这里,它们是用 javascript 引用的。因此我不完全确定如何访问这些文件。

我更喜欢使用 urrlib2 和 BeautifulSoup,而不是切换到 Selenium 来点击链接。有没有人有想法来实现这一点?将不胜感激。

【问题讨论】:

  • href 只是字符串,因此您可以使用字符串函数来获取带有文件名的子字符串。在浏览器中正常下载文件并检查其完整 url - 也许你找到了这个文件的基本 url,你可以下次使用它。
  • “链接”是通过提交表单完成的。您必须找出该表单包含的内容以及将数据发送到的位置。然后您必须复制该请求。不是你可以很容易地自动化的东西。它将非常特定于该页面。
  • 它可能会受到限制,这意味着对它的访问可能会通过 PHP 或其他任何东西......
  • 所以你是说我应该点击浏览器中的链接并检查 url 是如何变化的?因为我这样做了,并且它不包含与 href 链接中的 B000114563.PDF 相关的任何内容。
  • 此文件是从a810-bisweb.nyc.gov/bisweb/… 下载的,并且此网址中所需的所有元素都是您在名称form_cofo_pdf_view_B000114563.PDF 中拥有的

标签: javascript python html web web-scraping


【解决方案1】:

我下载了一些文件并将直接链接与其名称以及文件名中链接所需的所有元素进行了比较

文件名:

form_cofo_pdf_view_B000114563.PDF

直接链接:

http://a810-bisweb.nyc.gov/bisweb/CofoDocumentContentServlet
?passjobnumber=null
&cofomatadata1=cofo
&cofomatadata2=B
&cofomatadata3=000
&cofomatadata4=114000
&cofomatadata5=B000114563.PDF

所以当你从字符串javascript:$('form_cofo_pdf_view_B000114563.PDF').submit();获取文件名时,你可以创建直接链接

工作代码:http://pastebin.com/kt72GSyYa

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 2020-12-06
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多