python新闻评论分析_使用scray(Python)进行Web数据抓取(在线新闻评论)

既然你看起来像是先问后问的类型(这是一件很好的事情),我不会给你答案,而是一个(非常详细)如何找到答案的指南。在

问题是,除非你是雅虎的开发人员,否则你可能无法访问你试图获取的源代码。也就是说,您不确切地知道站点是如何构建的,以及您作为用户对它的请求在服务器端是如何处理的。但是,您可以调查客户端并尝试模拟它。我喜欢使用Chrome开发工具来实现这一点,但是你可以使用其他工具,比如FF firebug。在

所以首先我们需要弄清楚到底发生了什么。所以它的工作方式是,你点击“showcomments”它会加载前十条,然后你每次都需要继续点击下十条评论。但是,请注意,所有这些点击并没有将您带到另一个链接,而是lively获取注释,这是一个非常整洁的UI,但是对于我们的案例,需要更多的工作。我可以马上告诉你两件事:他们使用javascript加载评论(因为我在同一页面上)。在

每次单击时,它们都会用AJAX调用动态地加载它们(这意味着,不是用页面加载注释,而是向您显示,每次单击都会向数据库发出另一个请求)。在

现在让我们右键单击并检查该按钮上的元素。它实际上只是一个简单的文本跨度:View Comments (2077)

通过观察,我们仍然不知道它是如何生成的,也不知道它是如何被点击的。好的。现在,让devtools窗口保持打开状态,让我们单击它。这打开了前十个。但事实上,有人要求我们去拿他们。chrome开发工具记录的请求。我们在devtools的network选项卡中看到了很多令人困惑的数据。等等,这里有一个很有道理的:

^{2}$

看到了吗?_xhr然后获取注释。这很有道理。转到浏览器中的那个链接给了我一个JSON对象(看起来像python字典),其中包含该请求获取的所有10条注释。现在这是您需要模拟的请求,因为这是您想要的。首先,让我们把它翻译成人类可以阅读的一些正常需求:go to this url: http://news.yahoo.com/_xhr/contentcomments/get_comments/

include these parameters: {'_device': 'full',

'_media.modules.content_comments.switches._enable_mutecommenter': '1',

'_media.modules.content_comments.switches._enable_view_others': '1',

'content_id': '42f7f6e0-7bae-33d3-aa1d-3dfc7fb5cdfc',

'count': '10',

'enable_collapsed_comment': '1',

'isNext': 'true',

'offset': '20',

'pageNumber': '2',

'sortBy': 'highestRated'}

现在只是一个反复试验的问题。不过,这里有几点需要注意:很明显,计数决定了你得到多少评论。我试着把它改成100,看看会发生什么,但收到了一个错误的请求。很好地告诉了我为什么-“偏移量应该是总行数的倍数”。现在我们了解如何使用偏移量

content_id可能是用来识别您正在阅读的文章的内容。这意味着你需要从原始页面中取出来。试着挖一点,你会找到的。

另外,您显然不希望一次获取10条评论,因此,最好设法以某种方式获取总评论数(要么了解页面是如何获取的,要么只是从文章中获取评论)

使用devtools,您可以访问所有客户端脚本。因此,通过挖掘,您可以发现指向/get_comments/的链接保存在一个名为YUI的javascript对象中。然后,您可以尝试理解它是如何发出请求的,并尝试模仿它(尽管您可能可以自己解决)

您可能需要克服一些安全措施。例如,您可能需要原始文章中的会话密钥才能访问评论。这是用来防止直接访问网站的某些部分。我不会麻烦你的细节,因为这似乎不是一个问题,但你确实需要知道它,以防它出现。

最后,您必须解析JSON对象(python有很好的内置工具),然后解析html注释您正在获取(您可能想查看BeautifulSoup)。

正如你所见,这需要一些工作,但尽管我写了这么多,这也不是一个非常复杂的任务。在

所以不要惊慌。在

这只是一个挖掘和挖掘的问题,直到你找到黄金(而且,拥有一些基本的网络知识并不伤害)。然后,如果你遇到了路障,真的不能再往前走了,那就回到这里来,再问一次。有人会帮你的。在

祝你好运!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值