Xxxxxxxxxxs 2020-03-13 11:43 采纳率: 0%
浏览 180

scrapy引擎为什么没有开启spider

spider代码如下

import scrapy,re
from ..items import LianjiaItem


class LjSpider(scrapy.Spider):
    name = 'lj'
    allowed_domains = ['lianjia.com/city/']
    start_urls = ['https://www.lianjia.com/city/']

    def parse(self, response):
        city_list = response.css('.city_list_ul li .city_list ')
        for city in city_list:
            city_name = city.css('li a ::text').get()
            if city_name == '西安':
                city_url = city.css('li a ::attr(href)').get()
                item = LianjiaItem(city=city_name)
                print(city_name,city_url)
                yield scrapy.Request(city_url + 'zufang/rs/',callback=self.parse_regin,meta={'item':item})

    def parse_regin(self, response):
        regin_list = response.css('.filter__item--level2  ')
        for regin in regin_list:
            regin_name = regin.css('a ::attr(href)').get()
            if regin_name == '雁塔':
                regin_url = regin.css('a ::text').get()
                item = LianjiaItem(regin=regin_name)
                yield scrapy.Request(response.urljion(regin_url),callback=self.page_url, meta={'item':item})#此处网站有变化,item

    def page_url(self, response):
        page_list = response.css('ul[style="display:hidden"] a ::attr(href)').getall()
        for page_url in page_list:
            if page_url:
                yield scrapy.Request(response.urljion(page_url),callback=self.parse_house, meta={'item':response.meta.get('item')})

    def parse_house(self, response):
        url_list = response.css('.content__list--item--main p a ::attr(href)').getall()
        for url in url_list:
            url = re.search(r'/zufang/\.+\.html',url)
            house_url = "xa.lianjia.com" + url #此处网站有变化
            yield scrapy.Request(house_url,callback=self.parse_detail,meta={'item':response.meta.get('item')})

    def parse_detail(self, response):
        title = response.css('.content__title ::text').get()
        prices = response.css('.content__aside--title::text').getall()
        price = ''.join(prices).strip()
        area = response.css('.content__aside__list li:nth-child(2) ::text').getall()[2]
        fl = response.css('.content__article__info2 li[class$="line"] ::text').getall()
        fl =  ''.join(fl).strip()
        item = LianjiaItem(title=title,price=price,area=area,fl=fl
                           )
        yield item

图片说明

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 19:43
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)