zoukankan      html  css  js  c++  java
  • 爬虫积累

    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
     
     
     

    您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!
  • 相关阅读:
    [DB] 数据库的连接
    JS leetcode 翻转字符串里的单词 题解分析
    JS leetcode 拥有最多糖果的孩子 题解分析,六一快乐。
    JS leetcode 搜索插入位置 题解分析
    JS leetcode 杨辉三角Ⅱ 题解分析
    JS leetcode 寻找数组的中心索引 题解分析
    JS leetcode 移除元素 题解分析
    JS leetcode 最大连续1的个数 题解分析
    JS leetcode 两数之和 II
    JS leetcode 反转字符串 题解分析
  • 原文地址:https://www.cnblogs.com/chenri/p/10518129.html
Copyright © 2011-2022 走看看