Scrapy 初窥笔记

  1. scrapy startproject YourProjectName

    建立scrapy项目
  2. 开始爬虫

    scrapy crawl SpiderName

    开始执行爬虫

    以上仿麻烦
    根目录新建执行文件

    from scrapy.cmdline import execute
    execute(['scrapy', 'crawl', 'dingdian'])

    顶点为spider的name

  3. 定义爬取的字段

    就比如说爬小说
    字段有 小说作者,小说内容等
    Item文件下定义

    class DingdianItem(scrapy.Item):
        author = scrapy.Field()
        content = scrapy.Field()

    如上,定义一定要继承Item
    然后字段皆为Field(), 没有其他类型
    比Django要方便的多

  4. 开始写核心spider部分

    spider以start_requests为初始函数,该函数必须yield一个可迭代对象
    比如Request(url, call_back, meta)
    参数说明url,即需要Request.get 的内容,call_back是一个parse函数,该函数可接受一个由刚才的get获取的response, meta是由上一个Request往这传的时候可以带上的参数

    parse 最终要yield 或 return 一个或多个 Item,来进行后续处理

    这里有个巨大的

    response尽量一次处理,不要在多个parse之间执行,因为所有的url,但凡被Request过,不会被二次请求,简单来说,url通常不能为response.url,如果你跟我一样踩到这个坑,注意这个解决方法

Scrapy的官方文档:
http://doc.scrapy.org/en/latest/topics/request-response.html#scrapy.http.Request
Request函数在文档中的定义:
class scrapy.http.Request(url[, callback, method=’GET’, headers, body, cookies, meta, encoding=’utf-8’, priority=0, dont_filter=False, errback])
在这儿, request的 dont_filter 设置为True就可以了

  1. Item被收集完成后,进入pipeline,
    这里就进行最后的处理了,可以将Item的内容提取出来,进行数据库等的存储
    模板:
class DingdianPipeline(object):

    def process_item(self, item, spider):
        # deferToThread(self._process_item, item, spider
        if isinstance(item, DcontentItem):
            url = item['chapterurl']
            name_id = item['id_name']
            num_id = item['num']
            xs_chaptername = item['chaptername']
            xs_content = item['chaptercontent']
            Sql.insert_novel(name, content, name_id, num_id, url)
            print('小说存储完毕')
            return item

def process_item(self, item, spider):该方法必须重写,且return item此外,此函数通常功能即为去重后存储

以上为此次学习内容,差点一下午完成,踩坑踩两天

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值