首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selenium和Scrapy抓取所有下一页

使用Selenium和Scrapy抓取所有下一页
EN

Stack Overflow用户
提问于 2021-01-26 18:30:35
回答 1查看 40关注 0票数 0

我正在尝试获取所有的“下一页”,并通过单击页面底部的按钮“下一步”,使用Selenium继续抓取这些页面。我想要得到所有的(第2,3,4页等)。然而,我不确定我在这里做错了什么,但我无法让'click‘选项工作。

下面是我的代码:

代码语言:javascript
复制
import scrapy
import re
import math
from selenium import webdriver
import time

class PropertyFoxSpider(scrapy.Spider):
    name = 'property_fox'
    start_urls = [
        'https://propertyfox.co.za/listing-search?currentpage=1&term_id=62515&keywords=Western+Cape&orderby=createddate:desc&status%5B%5D=Active'
    ]


    def __init__(self):
        #path to driver
        self.driver = webdriver.Chrome('my_path_here')
    

    def parse(self, response):
        self.driver.get(response.url)
        for prop in response.css('div.property-item'):
            link = prop.css('a::attr(href)').get()
            banner = prop.css('div.property-figure-icon div::text').get()
            sold_tag = None
            if banner:
                banner = banner.strip()
                sold_tag = 'sold' if 'sold' in banner.lower() else None

            yield scrapy.Request(
                link,
                callback=self.parse_property,
                meta={'item': {
                    'agency': self.name,
                    'url': link,
                    'offering': 'buy',
                    'banners': banner,
                    'sold_tag':  sold_tag,
                }},
            )
        elem = self.driver.find_element_by_id('pagerNext')
        #elem = self.driver.find_element_by_xpath('//*[@id="pagerNext"]')
        elem.click()
        time.sleep(0.2)

     def parse_property(self, response):
         item = response.meta.get('item')
         . . .
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 18:44:14

尝试等待,直到元素可单击:

代码语言:javascript
复制
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

elem = WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.ID, "pagerNext")))
elem.click()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65899644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档