我在此网站上找不到Xpath或语法错误

问题描述 投票:0回答:1

我正在尝试从此URL https://drive.getbigger.io/#/stores中抓取数据,但是我没有找到我要导出的文本的Xpath,这是生产者的报价。

首先,我尝试使用Google工作表中的importxml函数:

=IMPORTXML(A1;"/html/body/flt-ruler-host/div[23]/p")

并且它给了我N / A错误,“导入的内容为空”

所以我尝试使用附加组件和Parsehub删除此网站,并且每次都给我一个.csv文件,在该文件中我找不到要导出的数据。

而且我也找不到要剪贴的数据的正确Xpath,当我使用检查工具时,数据不在<body>部分中。

然而,我在importXML函数中使用的Xpath是我在<body>部分中找到的一些代码,并且该代码与我要提取的文本(生产者的报价)接近。

[我正在寻找的Xpath似乎在<head>部分中链接了一些javascript代码,当我使用选择工具将页面悬停在页面上以提取数据时,它也会选择整个页面,也许是因为“滚动<div>”。

所以我想知道该网站是否使用了某种防止刮擦或其他保护措施。

请告诉我是否:

  • 我可以找到正确的Xpath以便使用importXML函数进行剪贴吗?
  • 我应该使用python脚本提取数据吗?
  • 如果网站阻止了我的尝试,我该怎么做?

谢谢

javascript python xpath screen-scraping google-sheets-importxml
1个回答
0
投票

由于该网站使用动态呈现(javascript),因此您将无法使用IMPORTXML公式刮任何内容。

所以是的,Python + Selenium(或其他组合)可以完成这项工作。如果您遵循某些规则(切换用户代理,在请求之间添加暂停),网站将不会阻止您。

您可能需要这些XPath:

产品说明:

//p[1][string-length(text())>5][parent::flt-dom-canvas]

产品价格:

//p[3][contains(text(),"€") and not (contains(text(),","))][parent::flt-dom-canvas]

但是,我认为获取数据的最优雅的方法可能是使用网站所依赖的API。使用GoogleSheets和自定义的ImportJSON脚本,您可以获得类似的内容(作为查询的“ fromage”结果):

Drive

它不会立即可用,您将不得不修改脚本的某些部分,因为它不会加载在请求中需要标头的JSON(用POST调用)。简而言之,您需要构造有效负载部分,向请求中添加标头(“ Bearer XXXXX”),并向函数中添加参数以检索结果。

这一切取决于您的目标和预期的输出。

编辑:对于参考(构造有效负载,添加参数),您可以阅读:

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetchurl,-params

还要查看浏览器开发人员工具的networktab,以查找:API的URL和要发送的正确参数。

© www.soinside.com 2019 - 2024. All rights reserved.