Scrapy/Selenium 两次跳转到下一页,然后中断(元素不可点击)。此外,除了第一页外,没有提取任何数据
Posted
技术标签:
【中文标题】Scrapy/Selenium 两次跳转到下一页,然后中断(元素不可点击)。此外,除了第一页外,没有提取任何数据【英文标题】:Scrapy/Selenium jumps twice to the next page, then breaks (element not clickable). Plus no data is extracted except on the first page 【发布时间】:2021-03-29 10:21:08 【问题描述】:我正在尝试抓取一个网站,为此我需要程序跳转到下一页直到最后并提取每个网站上的数据。到目前为止,从起始页提取数据有效,也可以在第 2 页和第 3 页自动跳转。
前两次跳转后,程序停止,因为 元素点击被拦截:元素 ... 在点 (904, 603) 处不可点击。其他元素会收到点击。我不明白,因为前 2 次点击效果很好。
程序只在第一页提取需要的数据(回调),而不是在下面。知道为什么吗?
def parse(self, response):
url = 'xxxx'
self.driver = webdriver.Chrome('/Users/xxxx/chromedriver')
self.driver.maximize_window() # For maximizing window
self.driver.implicitly_wait(10) # gives an implicit wait for 10 seconds
self.driver.get(url)
while self.driver.find_elements_by_css_selector("body > div.container-fluid.main-container.bg-white.py-5 > section.maincontent.row > div > nav:nth-child(11) > ul > li:nth-child(7) > a"):
sel = Selector(text=self.driver.page_source)
single_joboffer = response.xpath(".//div[@class='col-12 col-md-10']/p[@class='inserattitel h2 mt-0']/a/@href")
for joboffer in single_joboffer:
url1 = response.urljoin(joboffer.extract())
yield scrapy.Request(url1, callback = self.parse_dir_contents)
element = self.driver.find_element_by_css_selector("body > div.container-fluid.main-container.bg-white.py-5 > section.maincontent.row > div > nav:nth-child(11) > ul > li:nth-child(7) > a")
self.driver.execute_script("window.scrollBy(0,4000)","", element)
sel = Selector(text=self.driver.page_source)
sleep(5)
self.driver.find_element_by_css_selector("body > div.container-fluid.main-container.bg-white.py-5 > section.maincontent.row > div > nav:nth-child(11) > ul > li:nth-child(7) > a").click()
self.driver.close()
我第一次尝试使用 xpaths 作为下一个按钮,但这不起作用,因为几个页面按钮具有相同的 xpath,所以它在页面之间不停地随机跳转。 css-selector 似乎是去这里的方式。我也玩过睡眠时间,但似乎对此没有影响。
【问题讨论】:
【参考方案1】:-
问题已修复:在前两页之后,css 结构发生了变化。从前两页的结构来看: ["|>|"] 它改变了从第三页开始到 ["|>|"]。我必须将 nth-child() 更改为 nth-last-child(2),才能始终获得“下一个”按钮。
【讨论】:
以上是关于Scrapy/Selenium 两次跳转到下一页,然后中断(元素不可点击)。此外,除了第一页外,没有提取任何数据的主要内容,如果未能解决你的问题,请参考以下文章
layui中上一页,下一页,跳转到第几页,确定如何变为英文?