实现scrapy 爬取伯乐在线全部文章,修复对获取下一页url的错误
scrapy 提供了图片下载和处理的功能,即 ImagesPipiline 类,直接通过配置 setting.py 设置相应的变量即可达到下载图片的目的
中间出现的错误:
no module named "PIL"
pip install pillow-
ValueError: Missing scheme in request url
这是在访问图片url 的时候出现的错误,查看源代码能够得知,这是ImagesPipeline类中def get_media_requests(self, item, info):
return [Request(x) for x in item.get(self.images_urls_field, [])]
这个函数访问url 的时候,返回的是一个数组,能够通过for 循环进行迭代访问。也就是说,在 parse 的时候,对 url 进行复制的 item 中的图片链接变量就必须是数组或者生成器
细节处理:
对 url 获取返回给scrapy 后,scrapy 会进行下载,但是url 可能需要拼接,这就需要使用到 urllib 库中的parse 类中的 joinurl 函数
设置环境变量或者工作路径
os.path.dir(file) 获取当前文件所在目录
os.path.abspath() 获取绝对路径
sys.path.append() 添加工作路径setting.py 中的参数说明
ITEM_PIPELINE
IMAGES_MIN_HEIGHT
IMAGES_MIN_WIDTH
IMAGES_URLS_FIELD
IMAGES_STORE
这些配置参数在 ImagesPipiline 类的实现中都能看到
总结成一篇博客,如何使用 scrapy 进行简单的爬虫
对 ZERO TO ONE 的读后感
今日计划:
博客
scrapy 如何将 item loader 的内容通过 pipeline 处理后保存到本地文件或者数据库中(采用 MySQL),或者放在 redis 中