原本使用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的原因,和动态加载网友并木有关系。。。。