【发布时间】:2020-05-31 01:39:18
【问题描述】:
我正在尝试从https://www.flashscore.com/tennis/atp-singles/australian-open-2020/results/ 中抓取一些数据
特别是,我对源代码中的“比赛页面数据结果”div 感兴趣。当我把它拉出来时,数据确实出现在 HTML 源代码中,但它看起来像这样:
"SA÷2¬~ZA÷ATP - SINGLES: Australian Open (Australia), hard¬ZEE÷MP4jLdJh¬ZB÷3473162¬ZC÷n5bYULYo¬ZD÷p¬ZE÷6N6d2yER¬ZF÷0¬ZO÷0¬ZG÷2¬ZH÷9011_MP4jLdJh¬ZJ÷5¬ZL÷/tennis/atp-singles/australian-open/¬ZX÷01110...000Australian O021, hard00000000Australian O027ralia)¬ZHS÷5724¬ZCC÷0¬ZAF÷ATP - Singles¬~AA÷WEJGUHfb¬AD÷1580633100¬ADE÷1580633100¬AB÷3¬CR÷3¬AC÷3¬CX÷Thiem
将真实数据与随机字符混合在一起。我试图从 'utf-8' 转换为 'ascii' 但它有同样的问题,只是使用不同的随机字符。
我在这里需要的正确编码是什么?还是有完全不同的方法?我正在使用 R(rvest 包)来避免在浏览器窗口中打开每一页。如果这更容易,我可以切换到 Python。
【问题讨论】:
-
我不知道您的
R (rvest package)或 Python。如果您对node感到满意,那么有一个包cheerio非常适合在不打开浏览器页面的情况下进行网络抓取。有了这个,您将获得所有 HTML 源代码。 -
看起来带有奇数字符的源代码实际上是创建页面的脚本的一部分,而不是显示页面本身的 HTML。您也许可以手动取消选择它,否则您可以使用
RSelenium之类的东西通过自动浏览器捕获页面。 -
div 锦标赛页面数据结果中的数据内容看起来像是某种混淆。也许是故意的?然而,这种疯狂是有规律的。如果您搜索“AB÷3-CR÷3-AC÷3-CX÷”(查看源代码),您将在玩家正前方获得 124 次点击。我的猜测是 javascript 会即时将数据转换为有效的 html。我不知道你是如何抓取的,但在 JS 支持下,内容放在
标签: javascript r web-scraping encoding