增加分页值Scraping+Selenium



我正在尝试使用Selenium+Screpy抓取一个日常生成的网站。

我已经成功地从第一个页面抓取了项目,但当我试图进入下一个页面时,为selenium生成的浏览器似乎总是在请求同一个页面。

我正在尝试:
1.-执行解析函数来提取第一页数据
2.-提取完成后,搜索下一个按钮并获取href属性
3.-再次调用发送新url的相同函数。

import scrapy
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class IndeedSpiderSpider(scrapy.Spider):
name = "indeed"
allowed_domains = ["es.indeed.com"]
def start_requests(self):
url = "https://es.indeed.com/jobs?q&l=Barcelona"
yield scrapy.Request(url=url, callback=self.parse_jobs)

def parse_jobs(self, response):
driver = webdriver.Firefox()
driver.get("https://es.indeed.com/jobs?q&l=Barcelona")
driver.implicitly_wait(10)
offersnames=driver.find_elements(By.XPATH, "//td/div/h2/span")
for i in range(len(offersnames)):
yield {
"name": offersnames[i].text
}
next_page_element = driver.find_element(By.CSS_SELECTOR, "ul.pagination-list > li:last-child > a")
next_page_url=next_page_element.get_attribute("href")
if next_page_url:
next_page = response.urljoin(next_page_url)
yield scrapy.Request(url=next_page, callback=self.parse_jobs)
driver.quit()

而不是scrapy。请求,您应该使用点击事件。总体结构应为:;等待页面完全加载;等待按钮出现在页面上。然后单击按钮。然后获取更新的页面,类似于:

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://www.example.com")
btn = driver.find_element_by_id('input-search')
btn.click()
time.sleep(2) 
print(driver.page_source.encode('utf-8'))

我没有运行代码,但在这些行上有一些内容。

最新更新