python网络爬虫Simple(3) scrapy爬虫框架

1Scrapy简介

五大核心组件:
引擎(Scrapy) 用来处理整个系统的数据流的流动。
调度器(Scheduler) 用来接受引擎发过来的请求,并按照一定的方式进行整理排列,放到队列中,当引擎需要时,交还给引擎。
下载器(Downloader)负责下载引擎发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。
爬虫(Spiders)用户根据自己的需求,编写程序,用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。
项目管道(Pipeline)负责处理爬虫提取出来的item,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。

在这里插入图片描述

2 安装Scrapy

输入命令:pip install scrapy
在这里插入图片描述
安装成功后,Scripts目录会多了一个scrapy.exe可执行文件。
在这里插入图片描述

3 Scrapy的简单使用

第1步创建工程。
输入命令:scrapy startproject getWeather
在这里插入图片描述
工程的目录结构如下:
在这里插入图片描述在这里插入图片描述
scrapy.cfg: 项目的配置文件
getWeather /: 该项目的python模块。之后您将在此加入代码。
getWeather /items.py: 项目中的item文件.
getWeather /pipelines.py: 项目中的pipelines文件.
getWeather /settings.py: 项目的设置文件.
getWeather /spiders/: 放置spider代码的目录.
第2步,修改配置文件getWeatherSpider


```python
1 #伪装请求载体身份
2 USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
3 
4 #可以忽略或者不遵守robots协议
5 ROBOTSTXT_OBEY = False  

第3步,创建爬虫文件getWeatherSpider
输入命令: scrapy genspider weatherSpider www.weather.com.cn
在这里插入图片描述
会产生weatherSpider.py,代码如下:

# -*- coding: utf-8 -*-
import scrapy

class weatherSpider(scrapy.Spider):
    name = 'weather'
    allowed_domains = ['www.weather.com.cn']
    start_urls = ['http://www.weather.com.cn/']

    def parse(self, response):
        pass

allowed_domains:域名
start_urls:爬取的页面
def parse:解析方法
定义天气预报数据模型:

class WeatherItem(scrapy.Item):
    date = scrapy.Field()  # 日期
    wea = scrapy.Field()  # 天气
    tem_max = scrapy.Field()  # 最高温度
    tem_min = scrapy.Field()  # 最低温度
    wind_direction = scrapy.Field()  # 风向
    wind_level = scrapy.Field()  # 风力

定义解析的具体逻辑:

```python
weathers = bsoup.find_all('li', class_='sky skyid lv1 on')
# `获取日期`
date = weather.find('h1').text
print("日期:", end=" ")
print(date)
# 获取天气
wea = weather.find('p', class_='wea').text
print("天气:", end=" ")
print(wea)

第4步,运行爬虫
输入命令:scrapy crawl weatherSpider
或scrapy crawl weatherSpider -o weather.csv

在这里插入图片描述
可以看到爬取结果:
在这里插入图片描述
此时,就爬取成功了,在目录下生成了weather.csv文件.
代码详见:https://github.com/alifeidao/python-spider-simple getWeather工程。

4 scrapy-redis

使用scrapy-redis搭建分布式爬虫环境,以后有时间再补充哈!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章