1. 程式人生 > >機器人--寒暄庫(數據準備2)

機器人--寒暄庫(數據準備2)

bsp url lib macintosh 執行 gen art 爬蟲 time

上次說了機器人的寒暄庫需要基於seq2seq模型來做訓練,訓練的前提是我們準備好了足夠的數據。

這次來說一下數據準備工作。

數據的來源一般分為內部已有的積累數據,另一個就是互聯網數據,比如百度。。。百度幾乎就是互聯網的一個鏡像。內部積累的文本數據有限,遠不如網絡數據豐富。so我們就要考慮怎麽獲取到網絡文本數據了,可能你已經猜到了,那就是爬蟲。

python的scrapy是一個快速,高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據

安裝

yum install libffi-devel

yum install openssl-devel

pip install scrapy

中文教程:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

創建項目

scrapy startproject myrobot_search

技術分享

項目結構:

技術分享

settings.py是爬蟲的配置文件

USER_AGENTua,也就是發http請求時指明我是誰,因為我們的目的不純,所以我們偽造成瀏覽器,改成

USER_AGENT = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36‘

ROBOTSTXT_OBEY表示是否遵守robots協議(被封禁的不抓取),因為我們的目的不純,所以我們不遵守,改成

ROBOTSTXT_OBEY = False

DOWNLOAD_DELAY表示對同一個站點抓取延遲,也就是抓一個,歇一會,為了對方站點沖擊,我們調整為1,也就是一秒抓一個CONCURRENT_REQUESTS_PER_DOMAIN表示對同一個站點並發有多少個線程抓取,同樣道理,我們也調整為1

CONCURRENT_REQUESTS_PER_IP同理也調整為1

編寫項目

新建一個爬蟲文件RobotSearchSpider.py,如下:

技術分享

爬蟲命名為 myrobot_search.

允許爬取的域名 baidu.com

爬蟲初始爬取的種子鏈接:https://www.baidu.com/s?wd=房地產

parse方法會對爬取後的內容進行解析。如圖:

技術分享

思路:通過百度搜索 "房地產"這個關鍵詞,我們看如下結果:

技術分享

每個url都是在 class="c-container" 標簽下的<h3>下的<a>標簽中href屬性。so我們用python提供的selector選擇器進行文本解析。

同理,通過for container in containers: 依次取出container下的 urltitleabstract

然後遞歸調用scrapy.Request(href,callback=self.parse_url) parse_url方法獲取content。如題:

技術分享

執行項目

寫完後,我們進入到該目錄下執行腳本命令:scrapy runspider RobotSearchSpider.py

結果如圖:

技術分享

結果提取到以後,就要開始數據入庫了,這時候就要用到item.py文件了。這個不細說了,看官方文檔即可。

機器人--寒暄庫(數據準備2)