html - 抓取页面源代码的可靠方法,即每行开头的电视?

标签 html css xpath web-scraping

提取数据时,您可以使用 CSS/xpaths。但是在页面源代码中是否有类似或可靠的方法来执行此操作。

www.amazon.com/Best-Sellers-Electronics-Televisions/zgbs/electronics/172659

您可以获取页面源,然后使用 Regex 进行解析,但如果电视未加载到页面上,则可能不可靠。我已经查找了各种解决方案,但我还没有找到一个提到在每一行的开头获取每台电视(源代码中的 1、4、7 等)或使用可靠的方法,例如页面源代码中的 Css/xpaths。

做我想做的事情的可靠方法的黄金标准是什么?

最佳答案

要获取页面源,如果页面完全在服务器端呈现(大多数页面不会),您可以使用 CURL,或者使用 headless chrome 获取将在浏览器中呈现的实际 DOM (https://developers.google.com/web/updates/2017/04/headless-chrome)。

为了抓取内容,我使用了 cheerio ( https://github.com/cheeriojs/cheerio ),它允许您在 HTML 中读取对象,然后使用 jQuery 表达式从对象中抓取数据。 (Headless chrome允许你在你访问的页面上执行JS,所以你不一定需要cheerio)。

在您的特定示例中,您可以通过组合正确的类选择器来获取包含电视的 div,并使用带有“margin-left=0px”的属性选择器来获取每一行的电视,这将在每一行中获取第一个元素。这显然与页面结构密切相关,并且很可能会被页面源代码中最小的更改所破坏。 (与使用 xpaths 并没有什么不同。不过仍然比正则表达式好)

某些元素在页面上加载/未加载(如果那是你所说的电视不存在的意思),我所知道的没有黄金解决方案,除了为页面加载留出足够的时间并优雅地处理你的爬虫失败.

关于html - 抓取页面源代码的可靠方法,即每行开头的电视?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45129962/

相关文章:

javascript - 在弹出窗口关闭时刷新父页面

php - 循环随机背景图像

css - wordpress 网站的顶部显示不正确,带有垃圾邮件文本

javascript - 如何在 JavaScript 中更改添加和删除事件类

javascript - 如何使用 Javascript 了解父/容器样式?

jquery - HTML5/视差建议?

javascript - 如何防止 Mobile Safari 裁剪网页底部?

java - 如何等待页面加载后再执行下一步操作?

xslt 转换返回空白值

ruby - 如何使用 nokogiri 获取属性值