6.1 最簡單的爬蟲
網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。python的urllib/urllib2等模塊很容易實現這一功能,下面的例子實現的是對baidu首頁的下載。具體代碼如下:
代碼如下:
import urllib2
page=urllib2.urlopen("http://www.baidu.com")
print page.read()
6.2 提交表單數據
(1)用GET方法提交數據
提交表單的GET方法是把表單數據編碼至URL。在給出請示的頁面后,加上問號,接著是表單的元素。如在百度中搜索“馬伊琍”得到url為http://www.baidu.com/s?wd=%E9%A9%AC%E4%BC%8A%E7%90%8D&pn=100&rn=20&ie=utf-8&usm=4&rsv_page=1。其中?后面為表單元素。wd=%E9%A9%AC%E4%BC%8A%E7%90%8D表示搜索的詞是“馬伊琍”,pn表示從第100條信息所在頁開始顯示(感覺是這樣,我試了幾次,當寫100時,從其所在頁顯示,但如果寫10,就是從第1頁顯示),rn=20表示每頁顯示20條,ie=utf-8表示編碼格式,usm=4沒明白是什么意思,換了1、2、3試了下,沒發現什么變化,rsv_page=1表示第幾頁。如果要下載以上頁面比較簡單的方法是直接用上面的網址進行提取。如代碼:
代碼如下:
import urllib2
keyword=urllib.quote('馬伊琍')
page=urllib2.urlopen("http://www.baidu.com/s?wd="+keyword+"&pn=100&rn=20&ie=utf-8&usm=4&rsv_page=1")
print page.read()
(2)用post方法提交
GET方法中,數據是被加到URL上,這種方法數據量要求不大,如果需要交換大量數據的時間,POST方法是一個很好的方法。這里以前段時間寫的博客《python模擬163登陸獲取郵件列表》為例,具體代碼不在列出,詳見地址:http://www.cnblogs.com/xiaowuyi/archive/2012/05/21/2511428.html。
6.3 urllib,urllib2,httplib,mechanize的介紹
6.3.1urllib模塊(引自:http://my.oschina.net/duhaizhang/blog/68893)
urllib模塊提供接口可以使我們像訪問本地文件一樣來讀取www和ftp上的數據。模塊中最重要的兩個函數分別是:urlopen()和urlretrieve()。
urllib.urlopen(url[, data[, proxies]]) :
本函數創建一個表示遠程url的類文件對象,然后像本地文件一樣操作這個類文件對象來獲取遠程數據。參數url表示遠程數據的路徑,一般是網址;參數data表示以post方式提交到url的數據;參數proxies用于設置代理。urlopen返回 一個類文件對象,返回的類文件對象提供了如下方法:
read(), readline(), readlines(), fileno(), close():這些方法的使用方式與文件對象完全一樣;
info():返回一個httplib.HTTPMessage對象,表示遠程服務器返回的頭信息;
getcode():返回Http狀態碼。如果是http請求,200表示請求成功完成;404表示網址未找到;
geturl():返回請求的url;
代碼如下:
#! /usr/bin/env python
#coding=utf-8
import urllib
content=urllib.urlopen("http://www.baidu.com")
新聞熱點
疑難解答