2301_79928844 2024-05-21 12:57 采纳率: 57.1%
浏览 1
已结题

为什么报错了,怎么改

img

最后在main运行,运行没有报错,但代码是将数据写入到文件,打开文件,文件确是空的

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-21 12:57
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的代码片段,我注意到一些可能的问题,导致数据没有正确地写入CSV文件。以下是针对您的代码进行的修改和解释:

    首先,您在定义dangdangItem字典键值对时,键的格式不正确。Python字符串字面量中,应使用单引号(')或双引号("),而不是转义字符(apos;)。

    其次,在设置dangdangItem['nowprice']的值时,键名拼写错误,应该是'dangdangItem["now_price"]'。

    最后,确保在处理完所有解析的数据后,调用了yield语句将DangdangItem对象返回给Scrapy,这样数据才会被写入CSV文件。

    这里是修复后的代码:

    import scrapy
    from scrapytest.items import DangdangItem
    
    class DangdangSpider(scrapy.Spider):
        name = 'dangdang'
        
        start_urls = ['https://category.dangdang.com/cp01.54.06.19.00.00.htmL']
    
        def parse(self, response):
            title = response.xpath("//p[@class='name']/a[@class='itemlist-title']/text()").getall()
            now_price = response.xpath("//p[@class='price']/span[@class='search_now_price']/text()").get()
            pre_price = response.xpath("//p[@class='price']/span[@class='search_pre_price']/text()").get()
            details = response.xpath("//p[@class='detail']/text()").getall()
            comments = response.xpath("//a[@class='search_comment_num']/text()").getall()
            author = response.xpath("//a[@class='单品作者']/text()").getall()
            publishers = response.xpath("//a[@class='单品出版社']/text()").getall()
            dates = response.xpath('//p[@class="search_book_author"]/span[2]/text()').getall()
    
            # 检查是否获取到了数据
            if title and now_price and pre_price and details and comments and author and publishers and dates:
                item = DangdangItem()
                item['title'] = title
                item['now_price'] = now_price
                item['pre_price'] = pre_price
                item['details'] = details
                item['comments'] = comments
    
                yield item  # 返回DangdangItem对象以便写入CSV
    

    然后,确保您的settings.py中的输出配置正确。例如,您可能需要添加以下内容(如果还没有的话):

    FEED_FORMAT = 'csv'
    FEED_URI = 'dangdangdata.csv'
    

    如果您已经设置了这些,但是仍然遇到问题,请检查以下几点:

    • 确保Scrapy正在运行并抓取了正确的URL。
    • 您的网络连接正常,可以访问指定的网页。
    • 网站结构有无变动,导致XPath选择器不再匹配相应元素。

    执行上述更改后,重新运行爬虫,应该可以看到数据被写入到dangdangdata.csv文件中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 5月21日

悬赏问题

  • ¥50 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题
  • ¥20 vue+UEditor附件上传问题
  • ¥15 想做个WPS的自动化代码,不知道能做的起不。
  • ¥15 uniApp,生成安卓安卓包后,黑暗主题中间内容不生效,底部导航正常
  • ¥15 斯坦福自动漂移非线性模型反解
  • ¥15 学习Python如何找兼职