从网页抓取数据(ChromeDevTools自带获取元素XPath的Intruder里还有ul吗?)
优采云 发布时间: 2022-03-03 10:01从网页抓取数据(ChromeDevTools自带获取元素XPath的Intruder里还有ul吗?)
有时需要从网页上的表格中获取数据进行分析,例如:
由于数据混合在HTML中,没有API,所以获取第二列的rrname比较麻烦。
一般的思路是,像lxml或者BeautifulSoup这样的库解析HTML来从中提取数据,当然,即使是正则的……
但是对于这个简单的需求,其实有一个很方便的方法。
Chrome的DevTools自带获取元素XPath的功能,在Elements中的目标元素上右击,点击Copy - Copy XPath。
然后使用控制台中的 $x() 函数根据 XPath 定位元素。
但是有点可惜,这里的td里还有ul:
所以如果你使用$x('/html/body/table/tbody/tr/td[2]'),它的innerText将收录ul中的值。如图,ul里面的SD比较多:
查看XPath的语法,发现任何节点都可以用node()匹配:
所以使用 $x('/html/body/table/tbody/tr/td[2]/node()[1]') 得到想要的rrname:
将 rrname 放入域数组中:
var domains = [];
$x('/html/body/table/tbody/tr/td[2]/node()[1]').forEach(function(e){domains.push(e.data)})
然后复制到系统剪贴板:
copy(domains.join(''))
您也可以使用 Scrapy 编写爬虫。以后遇到这种需求,可以更改需要抓取的网址。
另外,Burp Suite 的 Intruder 有一个 Grep - Extract 选项,视觉正则化相当有用。
参考:chrome爬取页面上表格中某列的数据