Python 抓取页面使用 XPath 出现的问题
在抓取页面时,有时候需要多次使用 .xpath 方法来获取需要的元素。
在使用 .xpath 方法时,第一次 .xpath 的结果是正确的,而之后使用会出现抓取到的东西和预期不一样的情况。
比如:
trs = html.xpath('//table//tr')
获得的 trs 是表中的行元素,之后想要获取其中的格元素时:
for i in range(1, len(trs)):
tds = trs[i].xpath('//td')
proxy[tds[5].text].append(tds[1].text + '\t' + tds[2].text)
按正常思路来说代码仿佛没有问题,但出现的结果却非常奇怪,实际上是因为在第二次使用 .xpath 是需要把前面的斜杠去掉,即变成:
for i in range(1, len(trs)):
tds = trs[i].xpath('td')
proxy[tds[5].text].append(tds[1].text + '\t' + tds[2].text)
这个时候,会发现获取的元素是正确的,而且在使用时 td 元素必须是 tr 的子元素。
是个小问题,但是如果不注意实在是令人抓狂。本人已经掉坑 3 次了,今天真的决定记录一下。