• 爬虫积累


    1、在命令行输入 scrapy,可以验证scrapy框架是否安装成功
     
    2、scrapy 内置两种数据提取语法: CSS 和 XPath
     
    3、scrapy shell [url]
    提供一个网页的 url,执行命令后,scrapy 会自动去下载这个 url 对应的网页,将结果封装为 scrapy 内部的一个 response 对象并注入到 python shell 中,在这个 response 对象上,可以直接使用 scrapy 内置的css 和 xpath 数据提取器
    例子
    scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html
    (该网址是scrapy官网提供联系的网址)
     
    4、css selector 是 css 的语法来定位标签
     
    5、response.css('div#images a::text').extract()
    提取例子网页中 ID 为 images 的 div 下所有 a 标签的文本,
    div#images 表示 id 为 images 的 div,如果是类名为 images,这里就是 div.images。div a 表示该 div 下所有 a 标签,::text 表示提取文本,extract 函数执行提取操作,返回一个列表。
    要提取所有 a 标签的 href 链接,如下
    response.css('div#images a::attr(href)').extract()
    不只是 href,任何标签的任意属性都可以用 attr() 提取
     
    6、使用xpath路径提取
    表达式 描述
    nodename 选取此节点的所有子节点。
    / 从根节点选取。
    // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
    . 选取当前节点。
    .. 选取当前节点的父节点。
    @ 选取属性。
    例子:
    response.xpath('//div[@id="images"]/a/text()').extract()
    // 表示当前文本,div[@id="images"] 表示 id 为 images 的 div,通过属性来选择一个标签,要以 tag[@attr="value"] 的方式表示。
     
    7、还有 re() 和 re_first() 方法可以用于 css() 或者 xpath() 方法返回的对象。(使用正则表达式)
    例子:
    response.css('div#images a::text').re('Name: (.+) ')
    re() 方法中定义的正则表达式会作用到每个提取到的文本中,只保留正则表达式中的子模式匹配到的内容,也就是 () 内的匹配内容。
    re_first() 方法支持只作用于第一个文本:
     
    8、所有 scrapy 爬虫需要写一个 Spider 类,这个类要继承 scrapy.Spider 类。在这个类中定义要请求的网站和链接、如何从返回的网页提取数据等等。
     
    爬虫标识符号,在 scrapy 项目中可能会有多个爬虫,name 用于标识每个爬虫,不能相同
    name = 'shiyanlou-courses'
    9、allow_domains 可以是一个列表或字符串,包含这个爬虫可以爬取的域名
    例如
    allow_domains=['shiyanlou.com']
     
    10、Pipeline 对 Item 进行这几项处理:
    验证爬取到的数据 (检查 item 是否有特定的 field)
    检查数据是否重复
    存储到数据库
     
    11、startproject 命令创建一个 scrapy 项目
    scrapy startproject shiyanlou
    创建后会建立相应的目录,形成初步框架
    自动形成的文件:
    items.py 存放数据的容器,
    models.py 创建引擎,与数据库连接,形成影射关系,
    pipelines.py 对存放的数据进一步加工,如设置格式
    settings.py 爬虫的各种设置
    middlewares.py 中间件的设置
    spiders/***.py 爬虫的主程序,爬取想要的网页
     
    12、在某一个目录下,创建爬虫模板,使用genspider命令
    genspider 命令可以快速初始化一个爬虫模版:
    scrapy genspider <name> <domain>
    name 是爬虫的名称 domain是要爬取的网站
     
    13、runspider 命令用于启动一个独立的 scrapy 爬虫脚本,在 scrapy 项目中启动爬虫使用 crawl 命令,需要指定爬虫的 name:
    scrapy crawl courses
     
    14、request 对象是用来让 scrapy 获取页面时用的,response 对象是获取页面后收到的结果。
     
    15、切记,将爬取的数据存入数据库前,要提前在数据中创建对应的数据库和表。
     
    16、使用爬虫,要将数据存入数据库,先配置好环境,检查以下几项是否安装
    sudo pip3 install sqlalchemy或 flask-sqlalchemy
    sudo apt-get install libmysqlclient-dev
    sudo pip3 install mysqlclient
    sudo pip3 install scrapy
     
     
     

    您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!
  • 相关阅读:
    【SDOI2014】数表
    【洛谷P4735】最大异或和
    FFT学习笔记
    【SHOI2008】堵塞的交通
    HDU 1754 I Hate It 线段树
    hdu 1166 敌兵布阵 ( 线段树或者树状数组)
    hdu 5339 Untitled dfs
    The mook jong
    hdu 5363 Key Set 快速幂
    HDU 1983 Kaitou Kid
  • 原文地址:https://www.cnblogs.com/chenri/p/10518129.html
Copyright © 2020-2023  润新知