我在使用我的蜘蛛脚本抓取数据时遇到问题,即使在我在 scrapy shell 中测试它时类似的代码也有效。唯一的区别是在我的脚本中我拆分了选择器。
这是在 shell 中工作的选择器:
(//tr[position()>2]/td[position()=2])[1]
这是脚本中的选择器:
def parse_forsale(self, response):
listingdata = response.xpath(".//tr[position()>2]") # < PART 1 OF SELECTOR
for data in listingdata:
A = data.xpath(".//td[position()=2][1]").get() # < PART 2 OF SELECTOR
B = data.xpath(".//td[position()=2][2]").get()
C = data.xpath(".//td[position()=2][3]").get()
D = data.xpath(".//td[position()=2][4]").get()
E = data.xpath(".//td[position()=2][5]").get()
F = data.xpath(".//td[position()=2][6]").get()
G = data.xpath(".//td[position()=2][7]").get()
H = data.xpath(".//td[position()=2][8]").get()
我对为什么这不起作用的有根据的猜测是因为当我在 shell 中使用选择器时,我可以将括号放在“//”之前和“[1]”之前,这有助于选择器正常工作。但是在脚本中我不能这样做,因为我要拆分这两个组件。
关于如何解决这个问题的任何想法?
提前感谢您的帮助!