Scrapy爬取姓名大全,看看那个名字最受父母青睐
點擊上方“AI搞事情”關注我們
最近在做的項目需要用到名字的數據,可哪兒有這么多名字給我用呢?經一通搜索,不僅找到一個神奇的網站姓名大全,還有人開源了爬蟲的代碼。讓我一番修改,得到了百萬姓名,什么李偉、張偉一個也沒跑掉。話不多說,開始!!!
scrapy介紹
Scrapy 是一套基于Twisted、純python實現的異步爬蟲框架,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,相當的方便~
Scrapy整體架構和組成整體架構和組成
Scrapy Engine(引擎)
引擎負責控制數據流在系統所有組件中的流動,并在相應動作發生時觸發事件,是框架的核心。
Scheduler(調度器)
調度器從引擎接受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功能。
安裝
pip install scrapy爬蟲項目
準備工作
創建項目
新建爬蟲
這個時候,目錄下會創建xingmingdq文件夾,文件夾下就是xingmingdq scrapy項目,spiders下有xingming爬蟲文件。
建立item
items.py中添加以下代碼:
class Xingming_Item(scrapy.Item):name = scrapy.Field()xingshi = scrapy.Field()xingshi_zh = scrapy.Field()爬取名字
爬蟲文件spiders/xingming.py書寫網頁解析規則。
# -*- coding: utf-8 -*- import scrapy from xingmingdq.items import Xingming_Itemclass 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 = 0href = 'http:' + ibase = href.split('/name')[0] + '/name_list_'while page < 10:url = base + str(page) + '.html'page += 1yield 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'] = namethe_item['xingshi'] = xingshithe_item['xingshi_zh'] = xingshi_zhyield the_item處理流程
pipelines.py中,編寫結果寫入文件的處理。
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 itemdef close_spider(self, spider):self.fp.close()設置參數
要想執行pipelines,需要在settings.py中進行配置,搜索USER_AGENT和ITEM_PIPELINES進行修改。
# 修改USER_AGENT USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)' # 配置ITEM_PIPELINES ITEM_PIPELINES = {'xingmingdq.pipelines.XingmingdqPipeline': 300, }執行爬蟲
命令執行
腳本執行
寫入python文件,創建run.py,編輯下面代碼,pycharm中運行。
結果文件
詞云分析
在線詞云生成網站:https://www.weiciyun.com/
導入爬取的姓名數據,分析出圖:
哈哈哈,最多的竟然是婷婷
找找有你的名字沒有吧。
參考資料:
1.scrapy官方文檔: https://doc.scrapy.org/en/latest/
2.Python Scrapy 爬取姓名大全數據:https://www.jianshu.com/p/18bae338949a
長按二維碼關注我們
有趣的靈魂在等你
留言請摁
總結
以上是生活随笔為你收集整理的Scrapy爬取姓名大全,看看那个名字最受父母青睐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【opencv系列04】OpenCV4.
- 下一篇: PaddleHub人像分割模型:AI人像