xpath只能提取到部分页面元素的问题

世界杯刚过,想从世界杯贴吧爬取一些图片,用requests库,发现当设置User-Agent时,li标签用xpath提取不到,div标签只能提取到部分,并且发现当不设置User-Agent时就能正常提取到

所用的User-Agnet为谷歌浏览器:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36

尝试着修改为IE浏览器的User-Agnet:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;
也能正常提取元素

分析爬取的网页内容,发现使用谷歌浏览器的UA时,html标签被放在了注释里面,而使用IE的UA时,html标签正常


原因找到了,xpath把html注释当作一个结点,所以提取不到其中的li和div

解决办法:使用IE的UA

Playwright 是一个自动化库,支持多种浏览器自动化,包括 Chromium、Firefox 和 WebKit。它允许用户编写脚本来模拟用户的行为,如点击、输入文本等。Playwright 支持多种选择器来定位页面上的元素,而 XPath 是其中的一种。 要通过 XPath 在 Playwright 中提取元素值,你可以使用 `page.locator()` 方法配合 XPath 表达式定位元素,然后使用 `evaluate()` 或 `innerText()` 等方法来获取元素的值。以下是一个使用 Playwright 通过 XPath 提取元素值的示例代码: ```javascript const playwright = require('playwright'); async function main() { const browser = await playwright.chromium.launch(); const page = await browser.newPage(); await page.goto('https://www.example.com'); // 使用 XPath 选择器定位元素 const element = await page.locator('xpath=//div[@class="example-class"]'); // 提取元素的内部文本 const text = await element.innerText(); // 提取元素的特定属性 const attribute = await page.evaluate((element) => element.getAttribute('data-attribute'), element); console.log('元素内部文本:', text); console.log('元素属性值:', attribute); await browser.close(); } main(); ``` 在上面的代码中: 1. 使用 `page.locator()` 方法配合 'xpath=...' 来定位具有特定 XPath元素。 2. `innerText()` 方法用来获取元素的内部文本。 3. `evaluate()` 方法用来执行一个自定义的 JavaScript 函数,这里用来获取元素的某个属性。 请注意,XPath 表达式需要根据实际页面元素的结构来编写,而 'xpath=' 是 Playwright 中定位元素时使用的前缀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值