Python Scrapy遇到的问题(二)

目录

Scrapy xx.py文件中import出错的问题

Scrapy开启多条管道下载时的问题

(一) settings中管道设置名错误

(二)下载图片时看不到图片/找不到存放图片的文件目录

Pycharm常用快捷键整理

Scrapy xx.py文件中import出错的问题

问题描述:
ImportError: cannot import name ‘ScrapyDangdangItem’ from ‘scrapy_dangdang’
(D:\pythonProject\pachong\scrapy_dangdang\scrapy_dangdang__init__.py)

如图:

Python Scrapy遇到的问题(二)

解决: from 项目名 .items

报错的版本是:

Python Scrapy遇到的问题(二)

改成了:(忽略这个ScrapyDangdangItem报错,这里是编译器问题报编译错误,不影响运行)

Python Scrapy遇到的问题(二)

就是在项目名后加 .items

成功运行:

Python Scrapy遇到的问题(二)

Scrapy开启多条管道下载时的问题

(一) settings中管道设置名错误

问题描述:
NameError: Module ‘scrapy_dangdang.pipelines’ doesn’t define any object named ‘ScrapyDangdangDownloadPipeline….

解决:这种一般就是pipelines.py文件中的类名和settings.py文件中的ITEM_PIPLINES中的 SomePipeline名称不一样导致的,仔细检查一下。

(二)下载图片时看不到图片/找不到存放图片的文件目录

Define your item pipelines here
#
Don't forget to add your pipeline to the ITEM_PIPELINES setting
See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html

useful for handling different item types with a single interface
from itemadapter import ItemAdapter

class ScrapyDangdangPipeline:
    # 在爬虫文件执行之前执行的方法
    def open_spider(self,spider):
        self.fp = open('book.json','w',encoding='utf-8')

    # items就是yield后面的book对象
    def process_item(self, item, spider):
        self.fp.write(str(item))
        return item

    # 在爬虫文件执行完之后执行的方法
    def close_spider(self,spider):
        self.fp.close()

import urllib.request
class ScrapyDangDangDownloadPipeline:
    def process_item(self, item, spider):
        url = 'http:' + item.get('src')
        filename = './books/' + item.get('name') + '.jpg'
        urllib.request.urlretrieve(url=url,filename=filename)
        return item

可以看到我想将图片下载到/books/这个文件夹下,但运行之后,book.json文件中有内容,却看不见books文件夹,也看不到下载的文件

解决方法:在 spiders 目录下新建一个books文件夹,再运行。成功!

Python Scrapy遇到的问题(二)

Pycharm常用快捷键整理

ctrl+/: 注释(单行或者批量)
ctrl+f:搜索
ctrl+shift+f:全局搜索
ctrl+alt+L:格式代码(整理格式)

光标
ctrl+alt+enter:向上插入
shift+enter:向下插入

操作代码
ctrl+d:复制粘贴本行
选中内容:tab:进行退格
shift+tab:反向退格
alt+shift+上下键:选中代码移动
ctrl+shift+上下键:可以移动当前方法体,如果移动一行代码只能在代码体内移动
ctrl+shift+U:代码大小写
ctrl+shift+enter:补全代码

Original: https://blog.csdn.net/m0_64139004/article/details/127952850
Author: 坞吾5雾
Title: Python Scrapy遇到的问题(二)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/791100/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球