極簡單之爬蟲入門

2022-07-30 19:09:10 字數 3849 閱讀 6513

爬蟲(spider),這裡當然不是說結網捉蟲的蜘蛛那樣的生物學上的爬蟲,這裡說的是網際網路上的爬蟲,由程式設計師編寫,具有一定的邏輯性能夠完成在指定範圍內進行資訊收集的程式。

據說爬蟲佔據了網際網路上60%多的流量,可想而知這個無比龐大的網際網路上有多少只辛辛苦苦矜矜業業的爬蟲們啊。

爬蟲,主要分為搜尋引擎類的爬蟲和具有一定目標的專用爬蟲。前者索引整個web世界,讓人們能方便的搜尋到自己想要的資訊,一般**也很歡迎這些爬蟲。而後者有時候目的性比較強,爬取範圍也比較窄,一般收集資料用於二次加工或者資料分析等。這裡主要講的就是第二種爬蟲。

爬蟲的工作很簡單,一句話概括就是找到目標入口然後在目標頁面獲取目標內容。

爬蟲的原理也不複雜,主要是通過http或者其他協議,傳送請求到目標介面,然後解析返回的內容成結構化資料儲存到本地。

製作乙個爬蟲基本需要如下步驟:

完成這些,基本上就可以認為製作出來乙個網路爬蟲了,然後就是讓這個爬蟲啟動執行起來。至於怎麼處理爬到的資料,那就不是爬蟲的事了。

下面介紹2種爬蟲製作方法。

由於爬蟲這種需求比較多,所以網路上有一些專門的工具,能通過簡單的配置就能製作爬蟲。

這個對於一些簡單的場景基本夠用了,主要優勢是配置簡單,搭建方便,傻瓜化執行。

在現有工具無法滿足需求或者想要學習爬蟲的原理的時候,也可以通過編寫**來製作爬蟲。

當然,也不需要要從tcp/ip或者http協議這麼底層開始,可以通過一些開源的爬蟲框架來編寫爬蟲。其中以python語言作為基礎的爬蟲框架比較多,這裡以scrapy為例。

scrapy是乙個開源的python爬蟲框架,也是目前最流行的爬蟲框架之一,裡面整合了一些爬蟲常用的功能,基本上只需要寫爬蟲的邏輯就行。

以乙個最簡單的例子來說明scrapy的用法。

url裡面有不少引數,可能用不著,所以試著簡化這個url:

那麼爬蟲的入口就知道了。

scrapy用的是xpath做結構解析,所以這裡需要獲取到目標區域的xpath。xpath是什麼參考這裡。

chrome瀏覽器有乙個很好的外掛程式可以很方便的獲取到某個html節點的xpath,xpath helper,先安裝好它。

開啟chrome,輸入url(爬蟲&pn=0),然後f12進入開發者模式。通過滑鼠找到第1個搜尋結果的html節點,然後右鍵:copy-copy xpath。

得到搜尋結果html節點的xpath分別是:

第1頁1-10搜尋結果:

//*[@id="1"]/h3/a

//*[@id="2"]/h3/a

...//*[@id="10"]/h3/a

第2頁11-20搜尋結果:

//*[@id="11"]/h3/a

//*[@id="12"]/h3/a

...//*[@id="20"]/h3/a

那麼目標區域的xpath就很明顯了,獲取到xpath之後得到href屬性和text結果就行了。

當然也可以通過其他的xpath獲取到這些節點位置,這個並不是唯一的。

scrapy安裝這裡不再贅述,通過pip install scrapy即可安裝,國內可以把pip的源設定為阿里雲或者豆瓣的源,然後執行上述命令安裝。

本節全部**在:baidu_spider

進入工作目錄,命令列輸入:

scrapy startproject baidu_spider
然後進入baidu_spider目錄,開啟items.py,輸入如下**:

#搜尋結果的標題

title = scrapy.field()

#搜尋結果的url

url = scrapy.field()

這裡定義的是爬蟲爬取結果的結構,包含搜尋結果的標題和搜尋結果的url。

開啟settings.py,修改下面行:

#robotstxt_obey = true

robotstxt_obey = false

然後進入spider目錄,新建baiduspider.py,輸入下面**:

#函式名不可更改,此函式定義了爬蟲的入口位址

#使用瀏覽器訪問

self.browser = webdriver.chrome('d:/software/chromedriver.exe')

for i in range(0,20,10):

url = '爬蟲&pn=%d' % i

yield self.make_requests_from_url(url)

defparse(self, response):

#函式名不可更改,此函式定義了爬蟲的頁面解析

#開啟瀏覽器訪問頁面

全部**編寫完畢,在scrapy.cfg那一層目錄(頂層)中輸入下面的命令啟動爬蟲:

一切順利的話會輸出一些log,並且啟動chrome開啟網頁,最後生成result.csv檔案,檔案內包含了爬取到的結果。

本節全部**在:baidu_spider

簡單爬蟲入門

二 使用python做爬蟲的好處 三 爬蟲原理 四 http的請求與響應 五 cookie 和 session 六 token 七 urllib.request 的使用 python3 2.post請求 3.request 封裝請求頭資訊 4.隨機修改user agent 目的就是模擬不同的客戶端,...

python爬蟲入門簡單爬蟲

coding utf 8 from bs4 import beautifulsoup,soupstrainer from threading import lock,thread import sys,time,os from urlparse import urlparse,urljoin fro...

Python爬蟲 編寫簡單爬蟲之新手入門

最近整理了一下python的基礎知識,大家一般對 爬蟲 這個詞,一聽就比較熟悉,都知道是爬一些 上的資料,然後做一些操作整理,得到人們想要的資料,但是怎麼寫乙個爬蟲程式 呢?相信很多人是不會的,今天寫乙個針對新手入門想要學習爬蟲的文章,希望對想要學習的你能有所幫助 廢話不多說,進入正文!1 首先 使...