尝试使用Scrapy刮取分页链接时出现问题

2024-09-29 08:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过获取带有分页的物业网站上的条目标题来学习Scrapy。我无法从rules列表中定义的“下一页”中获取条目。在

代码:

from scrapy import Spider
from scrapy.selector import Selector 
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Rule, CrawlSpider
from property.items import PropertyItem
import re

class VivastreetSpider(CrawlSpider):
    name = 'viva'
    allowed_domains = ['http://chennai.vivastreet.co.in/']
    start_urls = ['http://chennai.vivastreet.co.in/rent+chennai/']
    rules = [
        Rule(LinkExtractor(restrict_xpaths = ('//*[text()[contains(., "Next")]]')), callback = 'parse_item', follow = True)
        ]

    def parse_item(self, response):
        a = Selector(response).xpath('//a[contains(@id, "vs-detail-link")]/text()').extract()
        i = 1
        for b in a:
            print('testtttttttttttttt ' + str(i) + '\n' + str(b))
            i += 1
        item = PropertyItem()
        item['title'] = a[0]
        yield item

编辑-用parse_项替换了parse方法,现在无法获取任何内容。在

忽略末尾的item对象代码,我打算用另一个方法的请求回调替换它,该方法从每个条目的URL获取更多细节。在

如果需要的话,我会把日志贴出来。在

Edit#2-我从分页页面获取URL,然后向另一个方法发出请求,该方法最终从每个条目的页面获取详细信息。parse_start_url()方法正在工作,但没有调用parse_item method()。在

代码:

^{pr2}$

Tags: 方法代码infromimportparse条目item
1条回答
网友
1楼 · 发布于 2024-09-29 08:22:58

你的蜘蛛很少有毛病。在

  1. 你的allowed_domains坏了,如果你检查你的蜘蛛,你可能会得到很多过滤掉的请求。

  2. 你对CrawlSpider有点误解。首先,当crawspider启动时,它下载start_urls中的每个url并调用parse_start_url

所以你的蜘蛛应该看起来像:

class VivastreetSpider(CrawlSpider):
    name = 'test'
    allowed_domains = ['chennai.vivastreet.co.in']
    start_urls = ['http://chennai.vivastreet.co.in/rent+chennai/']
    rules = [
    Rule(
        LinkExtractor(
        restrict_xpaths='//*[text()[contains(., "Next")]]'),
        callback='parse_start_url'
    )
    ]

    def parse_start_url(self, response):
        a = Selector(response).xpath('//a[contains(@id, "vs-detail-link")]/text()').extract()
        return {'test': len(a)}

相关问题 更多 >