轉載自:http://blog.csdn.net/w93223010/article/details/18968081
近期的工作學習中使用到了Python,分享一些初學者的心得與君共勉。
本節的內容主要是如何使用python去獲取網頁的原始碼並儲存到本地檔案中,希望通過本節可以讓你略微瞭解到python的神奇。
先上程式碼:
import urllib.request
def getPage(url):
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
return response.read().decode("utf-8")
url='http://www.kntpb.com/'
result=getPage(url)
print (result)
第1行匯入了必要的包
第2至6\5行定義了一個函式,目的是向指定url傳送http請求,並將網頁的原始碼返回
最後把獲得的原始碼進行展示
在命令列執行程式碼的話,可以看到類似圖1-1的一堆html程式碼,即為成功。
圖1-1
可以用瀏覽器訪問一下程式碼中的url,可以看到類似圖1-2的ebay的網站。(為了逃避中文字元的處理,所以選擇了英文的網站)
圖1-2
而在瀏覽的網頁的空白處單擊右鍵,選擇“檢視網頁原始碼”,可以看到類似圖1-3的的html原始碼,實際上與圖1-1中是一樣的。
圖1-3
修改一下程式碼,將獲取的html原始碼寫入本地的檔案。
-
import urllib
-
import urllib2
-
def getPage(url):
-
request = urllib2.Request(url)
-
response = urllib2.urlopen(request)
-
return response.read()
-
-
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic%2520Tee&_dcat=15687&Color=Black&_pgn=1'
-
result=getPage(url)
-
txt='D:\\result.html'
-
f = open(txt,"w+")
-
f.write(result)
第10至12行進行了檔案操作,在D盤建立了result.html檔案並將result變數中的內容寫入其中。
作為一個購物網站,大部分型別的商品都是分很多頁的,接下來繼續修改程式碼,讓它能夠取出前5頁的內容,分別寫入5個檔案中。
-
import urllib
-
import urllib2
-
def getPage(url):
-
request = urllib2.Request(url)
-
response = urllib2.urlopen(request)
-
return response.read()
-
-
url='http://www.ebay.com/sch/TShirts-/15687/i.html?Style=Basic%2520Tee&_dcat=15687&Color=Black'
-
p=0
-
while p<5:
-
print ' =='+str(p+1)+'==start=='
-
result=getPage(url+'&_pgn='+str(p+1))
-
txt='D:\\result'+str(p+1)+'.html'
-
f = open(txt,"w+")
-
f.write(result)
-
print ' =='+str(p+1)+'====end=='
-
p=p+1
-
f.close()
第8行修改了url字串的結尾部分,刪除了“&_pgn=1”,並將其作為後面迴圈的引數
第10至17行做了一個0至4的迴圈(當然你也可以設定成1到5),其中第11行和16行僅是跟蹤程式碼,用以顯示當前讀到的頁數。第12行的實參將迴圈變數p組合進去,達到獲取不同頁html原始碼的作用。
第18行結束檔案操作,關閉所用資源。
程式在命令列執行後,最後一行顯示“==5====end==”,並在D盤生成如圖1-4的,檔案大小近似的5個html檔案即為成功。
圖1-4
==========================================以下是之前的筆記=====================================
這篇文章主要介紹了Python3使用requests包抓取並儲存網頁原始碼的方法,例項分析了Python3環境下requests模組的相關使用技巧,需要的朋友可以參考下
本文例項講述了Python3使用requests包抓取並儲存網頁原始碼的方法。分享給大家供大家參考,具體如下:
使用Python 3的requests模組抓取網頁原始碼並儲存到檔案示例:
import requests
html = requests.get("http://www.baidu.com")
with open('test.txt','w',encoding='utf-8') as f:
f.write(html.text)
這是一個基本的檔案儲存操作,但這裡有幾個值得注意的問題:
1.安裝requests包,命令列輸入pip install requests即可自動安裝。很多人推薦使用requests,自帶的urllib.request也可以抓取網頁原始碼
2.open方法encoding引數設為utf-8,否則儲存的檔案會出現亂碼。
3.如果直接在cmd中輸出抓取的內容,會提示各種編碼錯誤,所以儲存到檔案檢視。
4.with open方法是更好的寫法,可以自動操作完畢後釋放資源。
另一個例子:
import requests
ff = open('testt.txt','w',encoding='utf-8')
with open('test.txt',encoding="utf-8") as f:
for line in f:
ff.write(line)
ff.close()
這是演示讀取一個txt檔案,每次讀取一行,並儲存到另一個txt檔案中的示例。
因為在命令列中列印每次讀取一行的資料,中文會出現編碼錯誤,所以每次讀取一行並儲存到另一個檔案,這樣來測試讀取是否正常。(注意open的時候制定encoding編碼方式)
轉自:小談部落格 http://www.tantengvip.com/2015/05/requests-html/