python - 无法使用 Scrapy 转到下一页
问题描述
我试图告诉 Scrapy 移动到下一页并抓取内容,但它停在第一页。
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class CasaSpider(CrawlSpider):
name = 'house'
start_urls = ['https://www.casa.it/affitto/residenziale/napoli/montecalvario-avvocata-san-giuseppe-porto-pendino-mercato?sortType=date_desc']
rules = [
(Rule(LinkExtractor(allow=(r'/immobili/.*'), deny=(r'/immagine-.*')),
callback='parse', follow = False)),
]
def parse(self, response):
yield {
'title': response.xpath('//*[@id="__next"]/div[2]/div[2]/div[1]/div/h1/text()').get(),
'price': response.xpath('//*[@id="__next"]/div[2]/div[2]/div[1]/div/ul/li[1]/text()').get()
}
next_page = response.css('a.paginator__page.tp-a--c.b-r--100.is-block.c-bg--w.tp-w--m.paginator__nav.next::attr(href)').get()
next_page = response.urljoin(next_page)
if next_page is not None:
yield scrapy.Request(url=next_page, callback=self.parse, dont_filter=True)
你知道我可能做错了什么吗?next_page
当我在 shell 中测试代码时,我得到了正确的结果。
谢谢大家的帮助
解决方案
只需为页面创建另一个规则:
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class CasaSpider(CrawlSpider):
name = 'house'
start_urls = ['https://www.casa.it/affitto/residenziale/napoli/montecalvario-avvocata-san-giuseppe-porto-pendino-mercato?sortType=date_desc']
rules = (
Rule(LinkExtractor(allow=(r'/affitto/residenziale/napoli/montecalvario-avvocata-san-giuseppe-porto-pendino-mercato/*')), follow=True),
Rule(LinkExtractor(allow=(r'/immobili/.*'), deny=(r'/immagine-.*')), callback='parse', follow=False),
)
def parse(self, response):
yield {
'title': response.xpath('//*[@id="__next"]/div[2]/div[2]/div[1]/div/h1/text()').get(),
'price': response.xpath('//*[@id="__next"]/div[2]/div[2]/div[1]/div/ul/li[1]/text()').get()
}
推荐阅读
- spring - 如何将 WebAppInitializer 实现 WebApplicationInitializer 类更改为主类
- html - Whatsapp 分享链接页面不存在
- opencv - 使用 Haar 级联分类器提取前景
- git - 取消制作文件夹 git 存储库
- flutter - Flutter:从第二个函数类调用值
- laravel - 如果列为真,则检查关系,Laravel
- django - 我的 django modelform 没有显示任何输入字段
- arrays - Arrayformula,省略某些列并合并
- python - 在 Python 中按名称检索 netCDF 全局属性的值
- javascript - 如何过滤其中一个项目中具有“空”值的猫鼬模式?