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搭建分佈式爬蟲環境,以後有時間再補充哈!!!

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