Python在近幾年迅速咋程序界掀起了不小的波瀾,而關於python的第三庫也使廣大程序員趨之若鶩,今天咱們就由淺入深的探討一下如何使用python作一個「網絡爬蟲」來抓取一些頁面信息。今天咱們使用的庫(包含python自身攜帶的庫和第三庫)html
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。python
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議[2] 。Python語法簡潔清晰,特點之一是強制用空白符(white space)做爲語句縮進。mysql
Python具備豐富和強大的庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中[3] 有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。程序員
網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人,在FOAF社區中間,更常常的稱爲網頁追逐者),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。另一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。正則表達式
URLLIBsql
Python 3 的 urllib 模塊是一堆能夠處理 URL 的組件集合。若是你有 Python 2 的知識,那麼你就會注意到 Python 2 中有 urllib 和 urllib2 兩個版本的模塊。這些如今都是 Python 3 的 urllib 包的一部分。當前版本的 urllib 包括下面幾部分:urllib.request urllib.error urllib.parse urllib.rebotparser。
BeautifulSoup
Beautiful Soup提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,經過解析文檔爲用戶提供須要抓取的數據,由於簡單,因此不須要多少代碼就能夠寫出一個完整的應用程序。瀏覽器
Beautiful Soup自動將輸入文檔轉換爲Unicode編碼,輸出文檔轉換爲utf-8編碼。你不須要考慮編碼方式,除非文檔沒有指定一個編碼方式,這時,Beautiful Soup就不能自動識別編碼方式了。而後,你僅僅須要說明一下原始編碼方式就能夠了。Beautiful Soup已成爲和lxml、html6lib同樣出色的python解釋器,爲用戶靈活地提供不一樣的解析策略或強勁的速度。網絡
#-*- coding: utf-8 -*- #導入urllib庫中的request from urllib import request #使用request的Request方法,括號中的參數爲你想爬取的網址地址 req = request.Request("http://www.baidu.com") #使用req的add_header方法向其中添加一些參數以使得你的爬蟲看起來像一個普通的HTTP訪問,這個你可使用瀏覽器的開發者工具中查到,例如在谷歌瀏覽器中,打開你想爬取的網頁,按F12,截圖以下: ![圖片描述][1] req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36") #獲取所需爬取網站的信息 resp = request.urlopen(req) #打印該信息 print(resp.read().decode("utf-8"))
安裝Beautifulsoup
在此我提供使用pip命令行來安裝 ,pip install BeautifulSoup.或者能夠參考一下博客也可,博客鏈接:函數
[連接描述][1][1]: http://blog.csdn.net/jenyzhang/article/details/45828481
具體實現(很是簡單)工具
#-- coding: utf-8 -#
#引入開發包
from urllib.request import Request
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
#請求URL,並把URL用UTF-8編碼
resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
#使用BeautifulSoup去解析
soup = BeautifulSoup(resp,"html.parser")
#去獲取全部以/wiki/開頭的a標籤的href屬性
listUrls = soup.findAll("a",href=re.compile("^/wiki/"))
for url in listUrls:
#使用正則表達式來篩選出後綴名爲.jpg或者.JPG的鏈接 if not re.search("\.(jpg|JPG)$",url["href"]): #打印所爬取的信息 print(url.get_text(),"<---->","https://en.wikipedia.org",url["href"])
最後附上項目的源碼地址,固然其中還有一些關於urllib和beautifusoup 以及如何將信息存儲在mysql的聯繫,你們有興趣的能夠看一下。
連接:http://pan.baidu.com/s/1pLiePCn 密碼:mh4t