PYTHON网络爬虫大数据朱炯明
Python 爬蟲架構
Python 爬蟲架構主要由五個部分組成,分別是調度器、URL管理器、網頁下載器、網頁解析器、應用程序(爬取的有價值數據)。
調度器:相當于一臺電腦的CPU,主要負責調度URL管理器、下載器、解析器之間的協調工作。
URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重復抓取URL和循環抓取URL,實現URL管理器主要用三種方式,通過內存、數據庫、緩存數據庫來實現。
網頁下載器:通過傳入一個URL地址來下載網頁,將網頁轉換成一個字符串,網頁下載器有urllib2(Python官方基礎模塊)包括需要登錄、代理、和cookie,requests(第三方包)
網頁解析器:將一個網頁字符串進行解析,可以按照我們的要求來提取出我們有用的信息,也可以根據DOM樹的解析方式來解析。網頁解析器有正則表達式(直觀,將網頁轉成字符串通過模糊匹配的方式來提取有價值的信息,當文檔比較復雜的時候,該方法提取數據的時候就會非常的困難)、html.parser(Python自帶的)、beautifulsoup(第三方插件,可以使用Python自帶的html.parser進行解析,也可以使用lxml進行解析,相對于其他幾種來說要強大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 樹的方式進行解析的。
應用程序:就是從網頁中提取的有用數據組成的一個應用。
1.爬蟲入門程序
? ? ? ? 首先我們調用的是 urllib2 庫里面的 urlopen 方法,傳入一個 URL,這個網址是百度首頁,協議是 HTTP 協議,當然你也可以把 HTTP 換做 FTP,FILE,HTTPS 等等,只是代表了一種訪問控制協議,
? ? ? ? urlopen 一般接受三個參數,它的參數如下:urlopen(url, data, timeout) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第一個參數 url 即為 URL,
第二個參數 data 是訪問 URL 時要傳送的數據,
第三個 timeout 是設置超時時間。
第二三個參數是可以不傳送的,data 默認為空 None,timeout 默認為 socket._GLOBAL_DEFAULT_TIMEOUT 第一個參數 URL 是必須要傳送的,在這個例子里面我們傳送了百度的 URL,執行 urlopen 方法之后,返回一個 response 對象,返回信息便保存在這里面。
#導入功能庫 urllib2
import urllib2
?
#調用urllib2庫的urlopen方法 第一個參數url即為URL
response = urllib2.urlopen("http://www.baidu.com")
?
#response 對象有一個 read 方法,可以返回獲取到的網頁內容。
print response.read()
2.爬蟲程序添加data、header,然后post請求
? ? ? ? 我們引入了 urllib 庫,現在我們模擬登陸 CSDN,當然上述代碼可能登陸不進去,因為 CSDN 還有個流水號的字段,沒有設置全,比較復雜在這里就不寫上去了,在此只是說明登錄的原理。一般的登錄網站一般是這種寫法。 我們需要定義一個字典,名字為 values,參數我設置了 username 和 password,下面利用 urllib 的 urlencode 方法將字典編碼,命名為 data,構建 request 時傳入兩個參數,url 和 data,運行程序,返回的便是 POST 后呈現的頁面內容。 注意上面字典的定義方式還有一種,下面的寫法是等價的
? ? ? ? 有些網站不會同意程序直接用上面的方式進行訪問,如果識別有問題,那么站點根本不會響應,所以為了完全模擬瀏覽器的工作,我們需要設置一些 Headers 的屬性。 首先,打開我們的瀏覽器,調試瀏覽器 F12,我用的是 Chrome,打開網絡監聽,示意如下,比如知乎,點登錄之后,我們會發現登陸之后界面都變化了,出現一個新的界面,實質上這個頁面包含了許許多多的內容,這些內容也不是一次性就加載完成的,實質上是執行了好多次請求,一般是首先請求 HTML 文件,然后加載 JS,CSS 等等,經過多次請求之后,網頁的骨架和肌肉全了,整個網頁的效果也就出來了。
#導入功能庫庫名 urllib ?urllib2 ?
import urllib ?
import urllib2 ?
?
#填寫地址url
url = 'http://www.server.com/login'
#設置Headers 的參數
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5;
總結
以上是生活随笔為你收集整理的PYTHON网络爬虫大数据朱炯明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌chrome模拟手机浏览网页:iPh
- 下一篇: Python3异常处理