从网站解析 - 源代码不包含我需要的信息

时间:2012-06-03 06:36:14

标签: python html parsing web-crawler

我对网络抓取工具有点新意,虽然我已经编程了一年了。因此,在我尝试解释我的问题时,请耐心等待。

我正在解析来自Yahoo!的信息新闻,我已经设法得到了我想要的大部分内容,但是有一小部分让我感到难过。

例如:http://news.yahoo.com/record-nm-blaze-test-forest-management-225730172.html

我想在评论旁边竖起拇指和拇指向下的数字。当我使用" Inspect Element"在我的Chrome浏览器中,我可以清楚地看到我需要查找的内容 - 即div类下的em标签' ugccmt-rate'。但是,我无法在我的python程序中找到它。在尝试追踪问题的根源时,我点击查看页面的来源,似乎这个标签不存在。你们知道我应该如何解决这个问题吗?这是否与页面上的javascript有关,它只在运行后显示信息?我很欣赏正确方向的一些指示。

感谢。

2 个答案:

答案 0 :(得分:2)

该页面是通过JavaScript生成的。

首先检查网站是否有移动版本。如果没有,请检查任何API或RSS / Atom订阅源。如果 nothing else,则您必须手动确定JavaScript加载的内容以及从何处加载,或使用Selenium自动化为您呈现JavaScript的浏览器进行解析。

答案 1 :(得分:1)

在Firefox中使用Web控制台,您可以非常轻松地查看页面在运行其脚本时实际发出的请求,并找出URI返回所需数据的内容。然后,您可以直接在Python脚本中请求该URI,并从中取出数据。它可能采用Python已经有一个要解析的库的格式,例如JSON。

雅虎!可能在服务器端有一些东西试图阻止您访问脚本中的这些数据文件,例如检查浏览器(用户代理标头),cookie或引用者。这些都可以用足够的毅力来伪造,但你应该把它们的存在作为你应该轻视的标志。 (它们也可能限制您在给定时间段内可以提出的请求数量,这是不可能的。)