2017.7.3

实现scrapy 爬取伯乐在线全部文章,修复对获取下一页url的错误

scrapy 提供了图片下载和处理的功能,即 ImagesPipiline 类,直接通过配置 setting.py 设置相应的变量即可达到下载图片的目的

中间出现的错误:

  1. no module named "PIL"
    pip install pillow

  2. 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 中的图片链接变量就必须是数组或者生成器

细节处理:

  1. 对 url 获取返回给scrapy 后,scrapy 会进行下载,但是url 可能需要拼接,这就需要使用到 urllib 库中的parse 类中的 joinurl 函数

  2. 设置环境变量或者工作路径
    os.path.dir(file) 获取当前文件所在目录
    os.path.abspath() 获取绝对路径
    sys.path.append() 添加工作路径

  3. 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 中

你可能感兴趣的:(2017.7.3)