python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

scrapy介紹

Scrapy 是一套基於Twisted、純python實現的異步爬蟲框架,用戶只需要定製開發幾個模塊就可以輕鬆的實現一個爬蟲,用來抓取網頁內容以及各種圖片,相當的方便~

python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

整體架構和組成

  • Scrapy Engine(引擎)

引擎負責控制數據流在系統所有組件中的流動,並在相應動作發生時觸發事件,是框架的核心。

  • Scheduler(調度器)
python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

調度器從引擎接受request並將他們入隊,在引擎再次請求時將請求提供給引擎。

  • Downloader(下載器)

下載器負責獲取頁面數據並提供給引擎,而後提供給spider。

  • Spider(爬蟲)

Spider是Scrapy用戶編寫用於分析response並提取item(即獲取到item)或額外跟進的URL的類,定義了爬取的邏輯和網頁內容的解析規則。 每個spider負責處理一個特定(或一些)網站。

  • Item Pipeline(管道)

Item Pipeline負責處理被spider提取出來的item。典型的處理有清洗,驗證及持久化(例如存取到數據庫中)

  • Downloader Middlewares(下載中間件)

下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的response(也包括引擎傳遞給下載器的Request)。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

  • Spider Middlewares(Spider中間件)

Spider中間件是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

安裝

<code>pip install scrapy/<code>

爬蟲項目

準備工作

  • 創建項目
<code>scrapy startproject xingmingdq/<code>
  • 新建爬蟲
<code>scrapy genspider xingming resgain.net/xmdq.html/<code>

這個時候,目錄下會創建xingmingdq文件夾,文件夾下就是xingmingdq scrapy項目,spiders下有xingming爬蟲文件。

python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

建立item

items.py中添加以下代碼:

<code>class Xingming_Item(scrapy.Item):
name = scrapy.Field()
xingshi = scrapy.Field()
xingshi_zh = scrapy.Field()/<code>

爬取名字

爬蟲文件spiders/xingming.py書寫網頁解析規則。

<code># -*- coding: utf-8 -*-
import scrapy
from xingmingdq.items import Xingming_Item


class XingmingSpider(scrapy.Spider):
name = 'xingming'
# allowed_domains = ['www.resgain.net/xmdq.html']
start_urls = ['http://www.resgain.net/xmdq.html']

def parse(self, response):
content = response.xpath('//div[@class="col-xs-12"]/a/@href').extract()

for i in content:
page = 0
href = 'http:' + i
base = href.split('/name')[0] + '/name_list_'
while page < 10:
url = base + str(page) + '.html'
page += 1
yield scrapy.Request(url, callback=self.parse_in_html)

# 解析每一頁
def parse_in_html(self, response):
person_info = response.xpath('//div[@class="col-xs-12"]/div[@class="btn btn-default btn-lg namelist"]/div[@style="margin-top: 20px;"]')
xingshi_zh = response.xpath('//div[@class="navbar-header"]/a/div[@style="text-align: center;"]/text()').extract()[0].split('姓之家')[0]
xingshi = response.url.split('/')[2].split('.')[0]
for every_one in person_info:
name = every_one.xpath('./text()').extract()[0]
the_item = Xingming_Item()
the_item['name'] = name
the_item['xingshi'] = xingshi
the_item['xingshi_zh'] = xingshi_zh
yield the_item/<code>

處理流程

pipelines.py中,編寫結果寫入文件的處理。

<code>class XingmingdqPipeline(object):
def __init__(self):
self.fp = open('xingming.csv', 'w', encoding='utf-8')

def process_item(self, item, spider):
self.fp.write('%s,%s,%s\\n' % (item['name'], item['xingshi_zh'], item['xingshi']))
return item

def close_spider(self, spider):
self.fp.close()/<code>

設置參數

要想執行pipelines,需要在settings.py中進行配置,搜索USER_AGENT和ITEM_PIPELINES進行修改。

<code># 修改USER_AGENT
USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)'
# 配置ITEM_PIPELINES
ITEM_PIPELINES = {
'xingmingdq.pipelines.XingmingdqPipeline': 300,
}/<code>

執行爬蟲

  • 命令執行
<code>scrapy crawl xingming/<code>
  • 腳本執行

寫入python文件,創建run.py,編輯下面代碼,pycharm中運行。

<code>import os
os.system("scrapy crawl xingming")/<code>

結果文件

python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

詞雲分析

在線詞雲生成網站: https://www.weiciyun.com/

導入爬取的姓名數據,分析出圖:

python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

哈哈哈,最多的竟然是 婷婷

python爬蟲框架Scrapy採集數據,並製作詞雲圖分析!

找找有你的名字沒有吧。


分享到:


相關文章: