目录
Scrapy xx.py文件中import出错的问题
问题描述:
ImportError: cannot import name 'ScrapyDangdangItem' from 'scrapy_dangdang'
(D:\pythonProject\pachong\scrapy_dangdang\scrapy_dangdang\__init__.py)
如图:
解决: from 项目名.items
报错的版本是:
改成了:(忽略这个ScrapyDangdangItem报错,这里是编译器问题报编译错误,不影响运行)
就是在项目名后加.items
成功运行:
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文件夹,再运行。成功!
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:补全代码