requests獲取保存網頁代碼

Python,分享一些初學者的心得與君共勉。
內容主要是如何使用python去獲取網頁的源代碼並存儲到本地文件中
先上代碼:

import requests

def gethtml(url):
    req=requests.get(url)
    html=req.text
    print(html)
url = 'http://www.youku.com'
gethtml(url)

第1行導入了必要的模塊
第2至5行定義了一個函數,目的是向指定url發送http請求,並將網頁的源代碼返回
最後把獲得的源碼進行展示

而在瀏覽的網頁的空白處單擊右鍵,選擇“查看網頁源代碼”,可以看到的html源碼,實際上是一樣的。

修改一下代碼,將獲取的html源碼寫入本地的文件。
方法一:

import requests
def getUrl(url):
    r= requests.get(url)
    txt=r.text
    f = open('file2.html', 'x', encoding='utf-8')
    f.write(txt)

url = 'http://www.youku.com'
getUrl(url)

方法二:

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  
text = open('testt.txt','w',encoding='utf-8')  
with open('test.txt',encoding="utf-8") as f:  
    for line in f:  
        text.write(line)  
text.close()  

這是演示讀取一個txt文件,每次讀取一行,並保存到另一個txt文件中的示例。
因爲在命令行中打印每次讀取一行的數據,中文會出現編碼錯誤,所以每次讀取一行並保存到另一個文件,這樣來測試讀取是否正常。(注意open的時候制定encoding編碼方式)

作爲一個購物網站,大部分類型的商品都是分很多頁的,接下來繼續修改代碼,讓它能夠取出前5頁的內容,分別寫入5個文件中。

[python] view plain copy
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行結束文件操作,關閉所用資源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章