【发布时间】:2015-07-22 06:56:42
【问题描述】:
我正在尝试使用自制的 Python 脚本从网页中获取锚元素的 href 属性的值。但是,当网页最初加载时,网页通过使用 AJAX jQuery 调用来接收锚元素所在的 div 元素的所有内容。 div 元素包含大约 90% 的网页内容。如何获取 div 元素的内容以及锚元素的 href 属性的值?
稍后,在我得到'href'属性的值之后,我想获取链接指向的网页的内容。但不幸的是,该调用也是使用 AJAX (jQuery) 进行的。当我在网络浏览器中点击这个时,地址栏中的网页地址没有变化,这意味着接收到的网页内容被加载到同一个网页中(上面提到的@987654326 @) 元素。
得到这个之后,我将使用 BeautifulSoup 来解析网页。那么,我怎样才能用 Python 做到这一点呢?我需要使用什么样的模块?以及需要的通用伪代码是什么?
顺便说一下,锚元素有一个onclick事件处理程序,它触发相应的jQuery函数,将内容加载到网页内的div元素中。
此外,如果解决方案需要,锚元素不与 id 关联。
【问题讨论】:
-
'anchor' 元素,因为它位于 'div' 元素内,所以在页面第一次加载时也会使用 ajax jquery 调用来获取。
-
所以,澄清一下,您正在使用 Python 抓取页面,并且与浏览器不同,ajax 调用没有发生,因此您看不到执行抓取所需的所有 html ?
-
@JLPeyret 是的,这正是我的问题所在。由于网页不是静态的,所以我事先不知道要废弃什么元素...
-
同意 citruspi - 您需要一个能够执行该 ajax 调用的浏览器。但要注意一点 - 无头浏览器可能会因更新的 JS 功能而变得古怪 - 例如,phantomjs 会在 bind 上出错,直到最近的 v2 - 所以你需要确保它们可以与你的页面一起使用在他们投入太多时间之前感兴趣。在那张纸条上,phantompy 说它的状态已被放弃。
-
您会考虑投票和/或接受以下答案吗?
标签: javascript jquery python html ajax