为了账号安全,请及时绑定邮箱和手机立即绑定

Scrapy 不解析项目

Scrapy 不解析项目

拉风的咖菲猫 2021-12-21 17:26:15
我正在尝试使用 pegination 抓取网页,但回电不解析项目,任何帮助将不胜感激....这里是代码# -*- coding: utf-8 -*-import scrapyfrom ..items import EscrotsItemclass Escorts(scrapy.Spider):    name = 'escorts'    allowed_domains = ['www.escortsandbabes.com.au']    start_urls = ['https://escortsandbabes.com.au/Directory/ACT/Canberra/2600/Any/All/']    def parse_links(self, response):        for i in response.css('.btn.btn-default.btn-block::attr(href)').extract()[2:]:            yield scrapy.Request(url=response.urljoin(i),callback=self.parse)        NextPage = response.css('.page.next-page::attr(href)').extract_first()        if NextPage:            yield scrapy.Request(                url=response.urljoin(NextPage),                callback=self.parse_links)    def parse(self, response):        for x in response.xpath('//div[@class="advertiser-profile"]'):            item = EscrotsItem()            item['Name'] = x.css('.advertiser-names--display-name::text').extract_first()            item['Username'] = x.css('.advertiser-names--username::text').extract_first()            item['Phone'] = x.css('.contact-number::text').extract_first()            yield item
查看完整描述

1 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

您的代码调用 urlsstart_urls并parse运行。由于没有任何div.advertiser-profile元素,它确实应该在没有任何结果的情况下关闭。所以你的parse_links函数根本没有被调用。


更改函数名称:


import scrapy



class Escorts(scrapy.Spider):

    name = 'escorts'

    allowed_domains = ['escortsandbabes.com.au']

    start_urls = ['https://escortsandbabes.com.au/Directory/ACT/Canberra/2600/Any/All/']


    def parse(self, response):

        for i in response.css('.btn.btn-default.btn-block::attr(href)').extract()[2:]:

            yield scrapy.Request(response.urljoin(i), self.parse_links)

        next_page = response.css('.page.next-page::attr(href)').get()

        if next_page:

            yield scrapy.Request(response.urljoin(next_page))


    def parse_links(self, response):

        for x in response.xpath('//div[@class="advertiser-profile"]'):

            item = {}

            item['Name'] = x.css('.advertiser-names--display-name::text').get()

            item['Username'] = x.css('.advertiser-names--username::text').get()

            item['Phone'] = x.css('.contact-number::text').get()

            yield item

我来自scrapy shell的日志:


In [1]: fetch("https://escortsandbabes.com.au/Directory/ACT/Canberra/2600/Any/All/")

2019-03-29 15:22:56 [scrapy.core.engine] INFO: Spider opened

2019-03-29 15:23:00 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://escortsandbabes.com.au/Directory/ACT/Canberra/2600/Any/All/> (referer: None, latency: 2.48 s)


In [2]: response.css('.page.next-page::attr(href)').get()

Out[2]: u'/Directory/ACT/Canberra/2600/Any/All/?p=2'


查看完整回答
反对 回复 2021-12-21
  • 1 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信