3

我对网络爬虫等有点陌生,尽管我已经编程一年了。所以请耐心等待我在这里解释我的问题。

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

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

我想在评论中获得拇指向上和向下拇指图标旁边的数字。当我在 Chrome 浏览器中使用“检查元素”时,我可以清楚地看到我必须寻找的东西 - 即 div 类“ugccmt-rate”下的 em 标签。但是,我无法在我的 python 程序中找到它。在试图追查问题的根源时,我点击查看页面的源代码,似乎没有这个标签。你们知道我应该如何解决这个问题吗?这是否与页面上仅在运行后才显示信息的 javascript 有关?我会很感激一些正确方向的指示。

谢谢。

4

2 回答 2

2

该页面是通过 JavaScript 生成的。

首先检查是否有网站的移动版本。如果没有,请检查任何 API 或 RSS/Atom 提要。如果没有其他问题,您要么必须手动确定 JavaScript 正在加载什么以及从何处加载,要么使用Selenium自动化浏览器,为您呈现 JavaScript 以供解析。

于 2012-06-03T06:41:20.147 回答
1

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

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

于 2012-06-03T06:45:25.073 回答