zoukankan      html  css  js  c++  java
  • 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就不用管理, 极大的提高了效率

  • 相关阅读:
    stmt.executeQuery不执行解决办法
    可变参数
    深度理解JVM
    JDBC 基础入门
    Flask中Mysql数据库的常见操作
    Flask与mysql数据库字段类型的区别以及基本用法
    Flask里面session的基本操作
    Flask里面的cookie的基本操作
    Flask表单(form)的应用
    Flask网页模板的入门
  • 原文地址:https://www.cnblogs.com/fenglj/p/7911756.html
Copyright © 2011-2022 走看看