有时会有从网页上的表格获取数据进行分析的需求,比如:
微信截图_20170206143750.png

因为数据混杂在 HTML 里,没有 API,想要获取第二列的 rrname 就比较麻烦。
常规思路是 lxml 或者 BeautifulSoup 之类的库解析 HTML 从中提取数据,当然正则就算了…
不过对于这种简单的需求,其实有个很方便的办法。

Chrome 的 DevTools 自带获取元素 XPath 的功能,在 Elements 里右键单击目标元素,点 Copy - Copy XPath 就行。
微信截图_20170206151329.png
然后在 Console 里用 $x() 函数就可以根据 XPath 定位元素了。

但有点坑的是这里的 td 里还有 ul
ul.png
所以若是用 $x('/html/body/table/tbody/tr/td[2]') 的话,它的 innerText 会包含 ul 里的值。如图,多了 ul 里的 S D
微信截图_20170206151044.png

查看 XPath 的语法,发现用 node() 可以匹配任意节点:
xpath_node.png

于是用 $x('/html/body/table/tbody/tr/td[2]/node()[1]') 就能获取到期望的 rrname 了:
微信截图_20170206151933.png

把 rrname 放进 domains 数组里:

var domains = [];
$x('/html/body/table/tbody/tr/td[2]/node()[1]').forEach(function(e){domains.push(e.data)})

微信截图_20170206152629.png

然后复制到系统剪贴板:

copy(domains.join(''))

也可以用 Scrapy 写个爬虫,以后遇到这种需求改改需要爬取的 URL 就行。
另外 Burp SuiteIntruder 有个 Grep - Extract 的选项, 可视化正则还是蛮好用的。

参考:

chrome 爬页面上表格某列的数据