【发布时间】: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