基於python網絡爬蟲的設計和思考

1、爬蟲技術

網 絡 爬 蟲, 又 稱 網 頁 蜘 蛛(webspider),是一個功能強大的能夠自動提取網頁信息的程序,它模仿瀏覽器訪問網絡資源,從而獲取用戶需要的信息,它可以爲搜索引擎從萬維網上下載網頁信息,因此也是搜索引擎的重要組成部分。

1.1爬蟲的分類

1.1 通用型爬蟲
該爬蟲又稱爲全網爬蟲,主要用在搜索引擎,從初始的 URL 到全網頁面,但需要的存儲容量大,速度要求快,工作性能強大。
1.2 聚焦型爬蟲
該爬蟲專注某一方面,只搜索事先定義的關鍵信息。
1.3 增量型爬蟲
每隔一段時間更新,重新爬取,更新數據庫。
1.4 深層爬蟲

該爬蟲一般需要登錄提交數據,才能進入頁面提取信息。

2、Python概述

Python 語言是一種功能強大面向對象的解釋型計算機程序設計語言,能有效而且簡單地實現面向對象編程。 Python 語言屬於語法簡潔清晰的開源編程語言,特色之一是強制用空白符 (white space) 作爲語句縮進。
Python 具有豐富的標準庫和強大的第三方庫。它常被暱稱爲膠水語言,能夠和其他語言製作的各種模塊(尤其是 C/C++)很輕鬆地聯結在一起,易於擴展。常見的一種應用情形是,使用 Python 快速生成程序的原型(有時甚至是程序的最終界面),然後可以用更合適的語言改寫其中有特別要求的部分,比如對於性能要求特別高的 3D 遊戲中的圖形渲染模塊,完全可以用 C/C++ 重寫封裝爲 Python 可以調用的擴展類庫。在使用之前,必須搭建好使用環境。到Python 官網下載針對用戶所使用的操作系統
Python 版本來安裝,安裝完成後需要設置環境變量便於啓動 Python。同時可選擇一款合適的編輯工具來完成爬蟲的編寫。
目前
Python 的版本有 2.X 3.X。兩者
主要在語法、編碼、性能、模塊上有些不同。
使用
Python 開發爬蟲的優點:
1)語言簡潔,使用方便。
2)提供功能強大的爬蟲框架。
3)豐富的網絡支持庫及網頁解析器

3、爬蟲案例 

本文通過 Python 語言來實現一個簡單的聚焦爬蟲程序,把需要的招聘信息爬取保存到本地。該爬蟲的功能是爬取某信息網上關於互聯網職位的信息,並將其發佈的招聘信息保存Excel 文檔中。
3.1 解決Where、What、How的問題
1Where:爬哪裏,確定要抓取的頁面。解決這個問題由用戶對數據的需求來決定。
2What:爬什麼,分析上述頁面,確定從頁面中爬取的數據。
3How:怎麼爬,可使用 Python 強大豐富的標準庫及第三方庫來完成。這是爬蟲的核心部分。尤其是對網頁的解析,可使用正則表達式、 BeautifulSoup lxml 來解析網頁,三種方法各有千秋,使用時可根據用戶的熟練程度和需要選擇一種適合的解析方法。
3.2 具體實施
該爬蟲系統主要由三個模塊:頁面抓取模塊、頁面分析模塊、數據存儲模塊,三個模塊之間相互協作,共同完成網頁數據的抓取。
1)爬蟲實現流程如圖 1 所示。
2)打開某信息網招聘信息,該網站URL 是爬蟲主要的處理對象,打開互聯網職位頁面並分析網頁源代碼結構,代碼如圖 2
示。
分析代碼過程中,可利用開發者工具確定每個數據對應的元素及
Class 名稱。例如本頁面的公司名稱、職位、薪水對應的元素及
Class 如表 1 所示。
3)確定爬蟲方法,導入程序中所用到的庫。對服務器發出請求,打開網頁,需要使用 requests 庫,本爬蟲中分析網頁使用的是BeautifulSoup 方式,需要用到 BeautifulSoup 庫,存儲數據用到庫 xlwt,整個爬蟲程序中用到的庫都需要導入。部分代碼及註釋(# 開始爲註釋行)爲如下:
# 導入程序中所用到的庫
import requests
from bs4 import BeautifulSoup
import xlwt

# 打開網頁

r=requests.get(link,headers=headers)
#
通過 BeautifulSoup find_all 方法解析
頁面
soup=BeautifulSoup(r.text,"lxml")
job_list=soup.find_all('li',class_="job_
itemclearfix")
#
查找公司名稱、職位、薪水等信息
for job in job_list:
comp=job.find('div',class_='comp_name').
text.strip()
name=job.find('span',class_='name').text.
strip()
salary=job.find('p',class_='job_salary').text.
strip()
4)爬取結果,本地保存。爬蟲從網頁中提取數據後,需要將數據保存下來, Python提供存儲數據的方法:可保存到文件中(包括TXT 文件和 XLS 文件),也可存儲在數據庫中(包括 MySQL 關係數據庫和 MongoDB 數據庫)。該爬蟲對招聘信息進行本地保存,存儲格式爲 .XLS 文件。部分代碼如下:# 創建 Excel 文檔保存將要爬取的數據
book=xlwt.Workbook(encoding='utf-8')
sheet1=book.add_sheet(u'sheet1',cell_
overwrite_ok=True)
#
在創建好的 Excel 文檔中寫入信息標題
heads=[u' 公司名稱 ',u' 職位 ',u' 薪水 ']
ii=0
for head in heads:
sheet1.write(0,ii,head)
ii+=1
#
調 用 write 方 法 將 查 找 到 的 信 息 寫 入
Excel 文檔中
for data in (comp,name,salary):
sheet1.write(i+1,0,comp)
sheet1.write(i+1,1,name)
sheet1.write(i+1,2,salary)
i+=1
#
保存 Excel 文檔
book.save('joblist.xls')
保存結果如圖 3 所示。
可以看到和網頁中提供的招聘信息是一
致的。
3.3 改進和完善上述爬蟲只能爬取網頁上的第一頁招聘信息,如果需要爬取所有頁面信息,可根據分析網頁 URL 地址的規律,使用 for 循環爬取。分析比較:
0 d 3 0 3 6 5 5 - 0 0 2 e - 4 9 6 4 - f 9 0 b -
fa2a1cb1f628&ClickID=3
0 d 2 0 2 4 0 8 - 0 0 2 e - 4 6 b c - d 2 a 9 -
36b62fb6175b&ClickID=2
到下一頁 ClickID 的值增加 1, 需重新構造
URL
部分代碼如下:
fori in range(0,10):
link1=link+str(i)



完結!!撒花!!


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