用python怎樣爬網頁呢?其實就是根據URL來獲取它的網頁資訊!
我們在瀏覽器中看到的畫面優美的介面,其實是由瀏覽器,對網頁內容做了解釋後,才呈現出來的類似word的WYSIWYG
實質它是一段HTML程式碼,加JS、CSS等。如果把網頁比作一個人,那麼HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。最重要的部分是存在於HTML中的。
用一個例子來爬網頁
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
這個例子中,真正的程式就兩行,把它儲存成demo.py,進入該檔案的目錄,執行如下命令檢視執行結果。
python demo.py
可以看到這個網頁的原始碼已經被爬下來了。
網頁爬取方法
那麼我們來分析這幾行Python程式碼:
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
第2行
response = urllib2.urlopen("http://www.baidu.com")
首先我們呼叫的是urllib2庫裡面的urlopen方法,傳入一個URL
這個網址是百度首頁,協議是HTTP協議
當然你也可以把HTTP換做FTP,FILE,HTTPS 等等,只是代表了一種訪問控制協議
三個引數
urlopen一般接受三個引數,它的引數如下:
urlopen(url, data, timeout)
第一個引數url即為URL,第二個引數data是訪問URL時要傳送的資料,第三個timeout是設定超時時間。
第一個引數URL是必須要傳送的,本例裡傳送了百度的URL
第二三個引數可以不傳,
data預設為空None
timeout預設為socket._GLOBAL_DEFAULT_TIMEOUT
執行urlopen方法之後,返回一個response物件,返回資訊便儲存在這裡面。
print response.read()
response物件有一個read方法,可以返回獲取到的網頁內容。
第3行
print response.read()
如果不加read直接列印會是什麼?
直接列印出了該物件的描述
<addinfourlat 139728495260376 whose fp= <socket._fileobjectobject at 0x7f1513fb3ad0>>
所以一定要加read方法
構造Requset
其實上面的urlopen引數,可以傳入一個request請求
它其實就是一個Request類的例項,構造時需要傳入Url,Data等等的內容。
比如上面的三行程式碼,我們可以這麼改寫
import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
執行結果是完全一樣的,只不過中間多了一個request物件
推薦大家這麼寫,因為在構建請求時還需要加入好多內容
通過構建一個request,伺服器響應請求得到應答,這樣顯得邏輯上清晰明確。
實質它是一段HTML程式碼,加JS、CSS等。如果把網頁比作一個人,那麼HTML便是他的骨架,JS便是他的肌肉,CSS便是它的衣服。最重要的部分是存在於HTML中的。
用一個例子來爬網頁
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
這個例子中,真正的程式就兩行,把它儲存成demo.py,進入該檔案的目錄,執行如下命令檢視執行結果。
python demo.py
可以看到這個網頁的原始碼已經被爬下來了。
網頁爬取方法
那麼我們來分析這幾行Python程式碼:
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
第2行
response = urllib2.urlopen("http://www.baidu.com")
首先我們呼叫的是urllib2庫裡面的urlopen方法,傳入一個URL
這個網址是百度首頁,協議是HTTP協議
當然你也可以把HTTP換做FTP,FILE,HTTPS 等等,只是代表了一種訪問控制協議
三個引數
urlopen一般接受三個引數,它的引數如下:
urlopen(url, data, timeout)
第一個引數url即為URL,第二個引數data是訪問URL時要傳送的資料,第三個timeout是設定超時時間。
第一個引數URL是必須要傳送的,本例裡傳送了百度的URL
第二三個引數可以不傳,
data預設為空None
timeout預設為socket._GLOBAL_DEFAULT_TIMEOUT
執行urlopen方法之後,返回一個response物件,返回資訊便儲存在這裡面。
print response.read()
response物件有一個read方法,可以返回獲取到的網頁內容。
第3行
print response.read()
如果不加read直接列印會是什麼?
直接列印出了該物件的描述
<addinfourlat 139728495260376 whose fp= <socket._fileobjectobject at 0x7f1513fb3ad0>>
所以一定要加read方法
構造Requset
其實上面的urlopen引數,可以傳入一個request請求
它其實就是一個Request類的例項,構造時需要傳入Url,Data等等的內容。
比如上面的三行程式碼,我們可以這麼改寫
import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
執行結果是完全一樣的,只不過中間多了一個request物件
推薦大家這麼寫,因為在構建請求時還需要加入好多內容
通過構建一個request,伺服器響應請求得到應答,這樣顯得邏輯上清晰明確。
相關文章
- Python筆記:網頁資訊爬取簡介(一)Python筆記網頁
- javascript如何獲取當前網頁的url地址JavaScript網頁
- 關於python爬取網頁Python網頁
- 網頁用python爬取後如何解析網頁Python
- 爬蟲——網頁爬取方法和網頁解析方法爬蟲網頁
- IOS遍歷網頁獲取網頁中<img>標籤中的圖片urliOS網頁
- C#爬取動態網頁上的資訊:B站主頁C#網頁
- 爬取網頁文章網頁
- 瀏覽器是怎樣渲染網頁的呢?瀏覽器網頁
- Python 3.2 獲取中文網頁Python網頁
- python爬取網頁詳細教程Python網頁
- Python應用開發——爬取網頁圖片Python網頁
- python實現微博個人主頁的資訊爬取Python
- Python爬取網頁的所有內外鏈Python網頁
- 利用requests+BeautifulSoup爬取網頁關鍵資訊網頁
- 如何使用python進行網頁爬取?Python網頁
- python初學-爬取網頁資料Python網頁
- javascript獲取網頁的高度JavaScript網頁
- Python網路爬蟲之爬取淘寶網頁頁面 MOOC可以執行的程式碼Python爬蟲網頁
- Puppeteer 實戰-爬取動態生成的網頁網頁
- webview獲取網頁titleWebView網頁
- Python 爬取網頁資料的兩種方法Python網頁
- ferret 爬取動態網頁網頁
- Puppeteer爬取網頁資料網頁
- .NET微信網頁開發之網頁授權獲取使用者基本資訊網頁
- node:爬蟲爬取網頁圖片爬蟲網頁
- 手機版python爬取網頁書籍Python網頁
- python 爬蟲如何爬取動態生成的網頁內容Python爬蟲網頁
- 爬蟲例項-淘寶頁面商品資訊獲取爬蟲
- 怎麼用python扒網頁?Python網頁
- 易優CMS根據aid獲取文件頁面連結AI
- python四種方式解析網頁獲取頁面中的連結Python網頁
- 微信網頁授權並獲取使用者資訊網頁
- QWebView獲取網頁原始碼WebView網頁原始碼
- 網路爬蟲有什麼用?怎麼爬?手把手教你爬網頁(Python程式碼)爬蟲網頁Python
- 結合LangChain實現網頁資料爬取LangChain網頁
- python爬蟲爬取網頁中文亂碼問題的解決Python爬蟲網頁
- 初識Scrapy框架+爬蟲實戰(7)-爬取鏈家網100頁租房資訊框架爬蟲