• Scrapy爬虫的基本流程


    首先要知道爬取的网站是否需要登陆(如知乎, 只有登陆才能访问某些数据), 是否需要headers等.

    之后就是根据自己的需要爬取自己需要解析的网页

    start_request_url是第一个函数, 如果不重载, 默认迭代调用start_urls中的所有链接, 然后交给parse(默认)函数处理, 

    也可以自己指明callback是哪个函数, 之后就是提取自己想要的信息. 

    提取出信息之后,保存在字典中, 然后交给items和pipeline做进一步的处理(数据清理和保存在数据库中等等)

    如果使用保存数据, 那么spider中就会很混乱, 毕竟spider只是获取数据, 其他事情交给items和pipeline更好

    所以可以使用Scrapy提供的ItemLoader, 将获取的数据交给items, items中的数据都是列表类型, 一定要处理之后才能保存在数据库中

    ItemLoader使用很简单, 在spider中定义一个item_loader = ItemLoader(item=TTItem(), response=response)

    TTItem就是自己在items文件中自己定义的用于处理数据的类

    因为ItemLoader返回的是列表类型, 所以可以在items文件中定义自己的ItemLoader, 也就是继承Itemloader

    然后将default_outputprocessor = TakeFirst(), 也就将所有的列表中的第一个值作为相对应的值, 不用一步步的处理列表

    然后就是保存在数据库中, 

    当存在多个Item, 保存在不同的表中时, 可以通过函数的形式来统一管理(和动态绑定很想)

    因为items中的所有Item处理完成之后都会交给pipeline进行处理,

    所以可以在item中定义好插入语句和相关的参数, 然后通过函数的形式将数据传递给pipeline

    其中每个item中都定义一个相同的函数(get_insert_sql, 自己随意命名) 然后将插入语句和参数一起交给pipeline

    这样只需要处理item, pipeline就不用管理, 极大的提高了效率

  • 相关阅读:
    three.js 加载外部模型的几种方法及格式
    使用httpserver开启一个本地服务器
    C#入门经典第4版 19章web编程基础 19.1~19.5代码(1)——default.aspx default.aspx.cs
    C#入门经典第4版 19章web编程基础 19.1~19.5代码(2)——ResultPage.aspx ResultPage.aspx.cs RegistrationInformation.cs
    Raspberry 刻录后首次登录配置
    禁止Chrome自动转换域名HTTP到HTTPS
    [Cnoi 2021]
    web前端的学习03
    web前端的学习01
    web前端的学习06
  • 原文地址:https://www.cnblogs.com/fenglj/p/7911756.html
Copyright © 2020-2023  润新知