zoukankan      html  css  js  c++  java
  • Scrapy框架使用

    1. 在window上使用Scrapy框架想要安装的模块
    1: pip3 install wheel
    2:下载twisted,下载完成后,进入下载目录,执行 pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl
    3: pip3 install pywin32
    4: pip3 install scrapy

    2.使用scrapy:
    第一步:创建一个工程:scrapy starproject 工程名
    第二部:进入工程目录 cd 工程名
    第三步:创建爬虫文件 scrapy genspider 爬虫文件名 www.xxx.com
    第四步:编写爬虫
    第五步:执行爬虫文件scrapy crawl 爬虫文件名

    3.爬虫文件的编写
    - 定义好了一个类,该类的父类是Spider,Spider是scrapy所有类的父类
    - 类中定义好了三个属性和一个方法
    - name:爬虫文件的名称
    - start_urls:起始url列表
    - 作用:可以对列表中的url进行get请求的发送
    - allow_demains:允许的域名。
    - parse(self,response):
    - 将起始url列表中的url请求成功后,response就是获取的响应对象,
    在该方法中负责实现数据解析
    - scrapy工程默认是遵从rotbos协议的,需要在配置文件中进行操作:
    - 不遵从robots协议
    - 指定日志等级
    - LOG_LEVEL = 'ERROR'

    第四:数据解析:
    利用response.xpath()进行数据解析,其中注意:提取标签内容时,返回的不是字符串,而是Selector对象,字符串是存储在该对象中的。
    需要调用extract()或者extract_first()将Selector对象中的字符串取出。

    第五步:持久化存储
    (1).在Item类中定义相关属性 eg: name = scrapy.Field()
    (2).在爬虫文件中的数据写入实例化的Item对象中 eg: item = DianyingItem() item['name'] = name
    (3)在爬虫类里面把Item对象提交给管道 eg: yield item
    (4)在管道文件中接受Item对象,且对其进行任意形式的持久化存储操作,如果想让两个管道类都接受到item,并且实行持久化存储,就要在每个每个类的process_item()中return item
    (5)在配置中打开管道

    第六步:手动发起请求:
    get请求:yield scrapy.Request(url,callback)
    post请求: yield scrapy.FormRequest(url,formdata,callback)

    实例:利用Scrapy框架对4567电影爬取:https://www.cnblogs.com/KingOfCattle/p/13038892.html
  • 相关阅读:
    读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第三部分)
    Spring Boot进阶系列一
    职场进阶之七种武器
    大龄IT程序员的救赎之道
    Web Service
    生产者消费者问题
    SpringBoot集成Apache Shiro
    简单模拟医院叫号系统
    IT小团队管理者的突围之道
    内部推荐
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/13038910.html
Copyright © 2011-2022 走看看