【scrapy】关于xpath helper中能匹配,但是在程序里匹配为none的问题

时间:2022-01-07 12:43:21

原本使用xpath helper匹配的时候还是好好的,然鹅,把这个.//*[@id='novelInfo']/table/tbody/tr[3]/td[1]/复制到代码里就不行了,debug的时候显示none

novelMonthClick=response.xpath(".//*[@id='novelInfo']/table/tbody/tr[3]/td[1]/text()").extract_first() 这里debug结果时None

由于我要爬取的信息在第二个tap的一个表格里(网页打开时,默认显示tap1)原以为是因为js,试过用selenium来模拟,点击tap2:

self.driver = webdriver.Chrome()
self.driver.get(response.url)
time.sleep(3)
tap2=self.driver.find_element_by_id('novelInfoTab').click()

可是结果依旧 = =

搞了大半天,终于终于被我找到解决方法,感谢这位网友https://blog.csdn.net/u012836179/article/details/69950730

原因:浏览器复制的xpath会自动优化,自己加上tbody,其实网页源代码里是没有的。

解决办法:去掉xpath中的tbody即可。

果然将的上面的代码改为

novelMonthClick=response.xpath(".//*[@id='novelInfo']/table/tr[3]/td[1]/text()").extract_first()

再来debug就可以啦!!

而且事实证明上面使用那个selenium模拟点击并没什么卵用。。。所以这个纯粹只是浏览器自己添加了tbody的原因,和动态加载网友并木有关系。。。。