Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 信息:爬网0页(0页/分钟),刮取0项(0项/分钟)_Python_Css_Scrapy_Web Crawler - Fatal编程技术网

Python 信息:爬网0页(0页/分钟),刮取0项(0项/分钟)

Python 信息:爬网0页(0页/分钟),刮取0项(0项/分钟),python,css,scrapy,web-crawler,Python,Css,Scrapy,Web Crawler,我刚开始学习Python和Scrapy。 我的第一个项目是在包含web安全信息的网站上抓取信息。但当我使用cmd运行时,它说“抓取了0个页面(以0个页面/分钟的速度),刮取了0个项目(以0个项目/分钟的速度)”,似乎什么都没有出来。如果有人能解决我的问题,我将不胜感激 我的代码: import scrapy class SapoSpider(scrapy.Spider): name = "imo" allowed_domains = ["imovirtual.com"] start_urls

我刚开始学习Python和Scrapy。 我的第一个项目是在包含web安全信息的网站上抓取信息。但当我使用cmd运行时,它说“抓取了0个页面(以0个页面/分钟的速度),刮取了0个项目(以0个项目/分钟的速度)”,似乎什么都没有出来。如果有人能解决我的问题,我将不胜感激

我的代码:

import scrapy

class SapoSpider(scrapy.Spider):
name = "imo"
allowed_domains = ["imovirtual.com"]
start_urls = ["https://www.imovirtual.com/arrendar/apartamento/lisboa/"]

def parse(self,response):
    subpage_links = []
    for i in response.css('div.offer-item-details'):
        youritem = {
        'preco':i.css('span.offer-item title::text').extract_first(),
        'autor':i.css('li.offer-item-price::text').extract(),
        'data':i.css('li.offer-item-area::text').extract(),
        'data_2':i.css('li.offer-item-price-perm::text').extract()
        }
        subpage_link = i.css('header[class=offer-item-header] a::attr(href)').extract()
        subpage_links.extend(subpage_link)

        for subpage_link in subpage_links:
            yield scrapy.Request(subpage_link, callback=self.parse_subpage, meta={'item':youritem})

def parse_subpage(self,response):
    for j in response.css('header[class=offer-item-header] a::attr(href)'):
        youritem = response.meta.get('item')
        youritem['info'] = j.css(' ul.dotted-list, li.h4::text').extract()
        yield youritem

有两件事需要纠正以使其正常工作:

  • 您需要使用要存储结果的路径定义提要URI设置

  • 您需要在
    parse_子页面中使用
    response
    ,因为逻辑如下
    :scrapy downloads“https://www.imovirtual.com/arrendar/apartamento/lisboa/并给出对
    parse
    的响应,您提取ads url,让scrapy下载每个页面,并将下载的页面提供给
    parse_subpage
    。因此
    parse_subpage`中的
    response
    对应于这个例子

这应该起作用:

import scrapy


class SapoSpider(scrapy.Spider):
    name = "imo"
    allowed_domains = ["imovirtual.com"]
    start_urls = ["https://www.imovirtual.com/arrendar/apartamento/lisboa/"]
    custom_settings = {
        'FEED_URI': './output.json'
    }
    def parse(self,response):
        subpage_links = []
        for i in response.css('div.offer-item-details'):
            youritem = {
            'preco':i.css('span.offer-item title::text').extract_first(),
            'autor':i.css('li.offer-item-price::text').extract(),
            'data':i.css('li.offer-item-area::text').extract(),
            'data_2':i.css('li.offer-item-price-perm::text').extract()
            }
            subpage_link = i.css('header[class=offer-item-header] a::attr(href)').extract()
            subpage_links.extend(subpage_link)

            for subpage_link in subpage_links:
                yield scrapy.Request(subpage_link, callback=self.parse_subpage, meta={'item':youritem})

    def parse_subpage(self,response):
        youritem = response.meta.get('item')
        youritem['info'] = response.css(' ul.dotted-list, li.h4::text').extract()
        yield youritem

您在哪里使用
start\u URL
?可能哪里都没有。。。我应该在哪里使用它?谢谢你的帮助:)但我仍然有问题,不仅仅是从这行代码中获取信息:“response.css('ul.dotterd-list,li.h4::text').Extract()”。从这行打印的是ul.dooted-list
  • 信息,我希望它只显示信息。。。我该怎么做?还有一个问题,如果我想插入更多的信息从子页面中提取,只需在相同的正确代码中添加更多的信息?因此您应该将其替换为
    response.css('ul.dotterd-list li::text').extract()
    。是的,如果你想获得更多的信息,你可以把它放在
    youritem
    中,例如
    youritem['title']=response.xpath('//h1[@itemprop=“name”]/text()).extract_first()
    谢谢你的帮助:)你能再帮我一件事吗?我需要总是更新数据库,这是因为爬虫总是在更新,我如何同步爬虫?有什么建议吗?同步爬虫是什么意思?如果我理解的很好,您希望您的数据中的数据仍然是最新的,不是吗?我不认为不不断地刮取就可以始终是最新的。但我认为一个好的做法是每天都刮,即使你至少每天都是最新的。