scrapy运行爬虫生成csv文件里面是空白的


import scrapy
from scrapy import Selector
from xutianqi34.items import HouseItem

class XspiderSpider(scrapy.Spider):
    name = "xspider"
    allowed_domains = ["www.tzfdc.com.cn/home"]
    start_urls = ["http://www.tzfdc.com.cn/home/newhouse/index"]


    def parse(self, response):
        sel = Selector(response)
        list_items = sel.css('body > div.h_main > div.h_main_left > div.h_list > ul > li')
        for list_item in list_items:
            house_item = HouseItem()
            house_item['name'] = list_item.css('div.h_1::text').extract_first()
            house_item['area'] = list_item.css('div.h_2::text').extract_first()
            house_item['ad'] = list_item.css('div.h_3::text').extract_first()
            house_item['ht'] = list_item.css('div.h_4::text').extract_first()
            yield house_item

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class HouseItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name = scrapy.Field()
    area = scrapy.Field()
    ad = scrapy.Field()
    ht = scrapy.Field()

img

运行 scrapy crawl xspider -o fdc.csv
后csv文件为空白的
需要其他信息求留言

我运行了你的代码,没有问题啊。可以将数据保存到csv中:

img


检查下settings.py:

img


检查下pipelines.py:

img


将抓取到的item输出打印下,如果代码没有问题,可能是你爬取的太频繁了,被禁止爬取了

代码我看了没问题,如果网站的代码或页面结构没有有改动的话,你的问题可能出在 CSV 文件的生成上。如果 CSV 文件中没有数据,很可能是因为在保存数据时文件没有被正确地打开或关闭。确保在代码中正确地配置了输出文件路径,并且在最后关闭了文件才能正常输出。

解决scrapy 生成csv文件空行问题

可以借鉴下
https://blog.csdn.net/weixin_38336920/article/details/83062448

  • 这篇博客: scrapy_爬取天气并导出csv中的 文件说明 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 名称作用
    scrapy.cfg项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
    items.py设置数据存储模板,用于结构化数据,如:Django的Model
    pipelines数据处理行为,如:一般结构化的数据持久化
    settings.py配置文件,如:递归的层数、并发数,延迟下载等
    spiders爬虫目录,如:创建文件,编写爬虫规则

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:

问题可能出现在allowed_domains中,应该填写的是网站的域名,而不是具体的页面URL。尝试将allowed_domains修改为["http://www.tzfdc.com/

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,检查一下setting.py中是否启用了FEED_FORMAT和FEED_URI,这两个参数设置了csv文件的格式和保存路径,例如:

FEED_FORMAT = "csv"
FEED_URI = "data/fdc.csv"

其次,建议使用绝对路径,这样可以避免保存路径不对的问题。

最后,如果以上两个解决方法都不起作用,请检查一下你的xpath选择器是否正确,可以在shell中运行response并调试xpath选择器,确保提取到正确的数据。下面是调试xpath选择器的代码:

>>> from scrapy import Selector
>>> body = '<body><div class="h_main"> ... </div></body>'
>>> sel = Selector(text=body)
>>> sel.css('div.h_1::text').extract()

如果以上方法还是不能解决问题,请贴出详细的代码和运行日志,方便进一步排查问题。
如果我的回答解决了您的问题,请采纳!

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:

很可能您的Scrapy爬虫生成的CSV文件为空白有以下几个原因:

  1. 没有yield任何item:如果Spider没有yield任何item,那么CSV exporter也不会有任何数据输出,导致CSV文件为空。解决方法是检查Spider中是否有yield item语句。
  2. item字段为空:即使Spider yield了item,但是如果item的所有字段都是空的,CSV文件也会为空。解决方法是检查item中是否有非空字段,是否每个被yield的item字段都为空。
  3. CSV exporter初始化问题:如果CSV exporter的初始化参数有问题,也可能导致CSV文件为空。解决方法是double check CSV exporter的初始化参数,例如:
python
import csv
class YourExporter(CsvItemExporter): 
  ...

exporter = YourExporter(somefile.csv, include_headers_line=True)


  1. CLOSED的文件对象:如果你在Spider中打开的CSV文件对象在yield item之前就被close了,那么item也不会被写入CSV文件。解决方法是确保文件对象在yield所有item之后再close。
  2. 其他问题:还可能是爬虫逻辑错误、item pipeline问题等其他原因导致的。这需要结合您的爬虫代码具体调试和检查。

总之,出现CSV文件为空白,很有可能是爬虫本身的问题,解决方法是:

  1. 检查Spider中是否有正确yield item
  2. 检查item字段是否全部为空
  3. 检查CSV exporter的初始化参数
  4. 确保CSV文件对象在yield item之后再close
  5. 其他代码逻辑检查和调试