當前位置:首頁 » 編程語言 » python獲取http報文

python獲取http報文

發布時間: 2023-08-14 08:46:17

❶ 如何用python爬取網站數據

這里簡單介紹一下吧,以抓取網站靜態、動態2種數據為慧返拍例,實驗環境win10+python3.6+pycharm5.0,主要內容如下:

抓取網站靜態數據(數據在網頁源碼中):以糗事網路網站數據為例

1.這里假設我們抓取的數據如下,主要包括用戶昵稱、內容、好笑數和評論數這4個欄位,如下:

對應的網頁源碼如下,包含我們所需要的數據:

2.對應網頁結構,主要代碼如下,很簡單,主要用到requests+BeautifulSoup,其中requests用於請求頁面,BeautifulSoup用於解析頁面:

程序運行截圖如下,已經成功爬取到數據:

抓取網站動態數據(數據不在網頁源碼中,json等文件中):以人人貸網站數據為例

1.這里假設我們爬取的是債券數據,主要包括年利率世型、借款標題、期限、金額和進度這5個欄位信息,截圖如下:

打開網頁源碼中,可以發現數據不在網頁源碼中,按F12抓包分析時,才發現在一個json文件中,如下:

2.獲取到json文件的url後,我們就可以爬取對應數據了,這里使用的包與上面類似,因為是json文件,所以還用了json這個包(解析json),主要內容如下:

程序運行截圖如下,前羨已經成功抓取到數據:

至此,這里就介紹完了這2種數據的抓取,包括靜態數據和動態數據。總的來說,這2個示例不難,都是入門級別的爬蟲,網頁結構也比較簡單,最重要的還是要會進行抓包分析,對頁面進行分析提取,後期熟悉後,可以藉助scrapy這個框架進行數據的爬取,可以更方便一些,效率更高,當然,如果爬取的頁面比較復雜,像驗證碼、加密等,這時候就需要認真分析了,網上也有一些教程可供參考,感興趣的可以搜一下,希望以上分享的內容能對你有所幫助吧。

❷ python 能獲取網頁的網路請求嗎

(一)通過GET和POST方式獲取頁面內容

網路爬蟲,即Web Spider,是一個很形象的名字。
把互聯網比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。

HTTP協議中定義了四個與伺服器進行交互的方法,分別是GET, POST,PUT,DELETE ,實際對應對伺服器內容的「增」刪「改」查「四個操作

本篇文章主要記錄我學習GET和POST請求方式的過程

首先,如何區分GET 和POST請求?

我們可以簡單地通過瀏覽器地址欄是否改變來加以區分。舉例說明,在網路上搜索CSDN時,頁面會跳轉到搜索結果頁,同時瀏覽器上方的URL也會發生改變。


如上圖所示,變化就在於,在最初的url後面會附加相關的欄位,以?分割url和請求的數據,這些數據就是你要查詢欄位的編碼。。而這個過程,就是典型的GET請求的情況。

POST請求則顯得」深藏不露「。它在於你必須通過瀏覽器輸入或提交一些伺服器需要的數據,才能給你返回完整的界面,這點其實與GET請求情況有相通之處,但是這個過程瀏覽器的地址欄是不會發生跳轉的。

那POST請求提交的數據是如何傳給伺服器的呢?可以採用一些分析頁面的手段來獲取上傳的數據。實際上,POST請求是將提交的數據放在HTTP包的包體中,這種方式無疑加強了數據的安全性,不像GET請求那樣,用戶可以通過跳轉的url就可以查看出向伺服器發送的數據。另外,POST請求除了提交數據外,還可以提交文件,這點也是GET請求做不到的。

總的來說,在做數據查詢時,建議用GET方式;而在做數據添加、修改或刪除時,建議用POST方式。

下面用具體代碼展示GET與POST方式的差異

#coding =utf-8import urllib2
url="httcom"req=urllib2.Request(url)#req表示向伺服器發送請求#response=urllib2.urlopen(req)#response表示通過調用urlopen並傳入req返回響應response#the_page=response.read()#用read解析獲得的HTML文件#print the_page#在屏幕上顯示出來#1234567

這是一個最簡單的爬蟲程序,功能類似於打開網路主頁。如果你此時用瀏覽器打開網路並查看其源代碼,會發現屏幕上的內容和瀏覽器中完全一樣,也就是說,上面這四行代碼將我們訪問網路時瀏覽器收到的代碼們全部列印了出來。
這就是一個最簡單的GET的例子。

再來看一個POST方式的例子

#code=utf-8import urllib2
import urllib
url='http'//把要發送的數據寫成字典value={ 'name':'BUPT', 'age':'60', 'location':'Beijing'#字典中的內容隨意,不影響#}
data=urllib.urlencode(value)#對value進行編碼,轉換為標准編碼#req=urllib2.Request(url,data)#向url發送請求,並傳送表單data#response=urllib2.urlopen(req)#獲取響應#the_page=response.read()#解析#print the_page#顯示#123456789101112131415


程序運行之後,你可以試試將獲取的網頁源代碼用瀏覽器打開,會發現得到的頁面是這樣的

因為我們向網站提供的數據是隨便寫的,並不存在,所以就會得到這樣的結果。

❸ 如何用python寫爬蟲來獲取網頁中所有的文章以及關鍵詞

所謂網頁抓取,就是把URL地址中指定的網路資源從網路流中讀取出來,保存到本地。
類似於使用程序模擬IE瀏覽器的功能,把URL作為HTTP請求的內容發送到伺服器端, 然後讀取伺服器端的響應資源。

在Python中,我們使用urllib2這個組件來抓取網頁。
urllib2是Python的一個獲取URLs(Uniform Resource Locators)的組件。

它以urlopen函數的形式提供了一個非常簡單的介面。

最簡單的urllib2的應用代碼只需要四行。

我們新建一個文件urllib2_test01.py來感受一下urllib2的作用:

import urllib2
response = urllib2.urlopen('http://www..com/')
html = response.read()
print html

按下F5可以看到運行的結果:

我們可以打開網路主頁,右擊,選擇查看源代碼(火狐OR谷歌瀏覽器均可),會發現也是完全一樣的內容。

也就是說,上面這四行代碼將我們訪問網路時瀏覽器收到的代碼們全部列印了出來。

這就是一個最簡單的urllib2的例子。

除了"http:",URL同樣可以使用"ftp:","file:"等等來替代。

HTTP是基於請求和應答機制的:

客戶端提出請求,服務端提供應答。

urllib2用一個Request對象來映射你提出的HTTP請求。

在它最簡單的使用形式中你將用你要請求的地址創建一個Request對象,

通過調用urlopen並傳入Request對象,將返回一個相關請求response對象,

這個應答對象如同一個文件對象,所以你可以在Response中調用.read()。

我們新建一個文件urllib2_test02.py來感受一下:

import urllib2
req = urllib2.Request('http://www..com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

可以看到輸出的內容和test01是一樣的。

urllib2使用相同的介面處理所有的URL頭。例如你可以像下面那樣創建一個ftp請求。

req = urllib2.Request('ftp://example.com/')

在HTTP請求時,允許你做額外的兩件事。

1.發送data表單數據

這個內容相信做過Web端的都不會陌生,

有時候你希望發送一些數據到URL(通常URL與CGI[通用網關介面]腳本,或其他WEB應用程序掛接)。

在HTTP中,這個經常使用熟知的POST請求發送。

這個通常在你提交一個HTML表單時由你的瀏覽器來做。

並不是所有的POSTs都來源於表單,你能夠使用POST提交任意的數據到你自己的程序。

一般的HTML表單,data需要編碼成標准形式。然後做為data參數傳到Request對象。

編碼工作使用urllib的函數而非urllib2。

我們新建一個文件urllib2_test03.py來感受一下:

import urllib
import urllib2
url = 'http://www.someserver.com/register.cgi'
values = {'name' : 'WHY',
'location' : 'SDU',
'language' : 'Python' }
data = urllib.urlencode(values) # 編碼工作
req = urllib2.Request(url, data) # 發送請求同時傳data表單
response = urllib2.urlopen(req) #接受反饋的信息
the_page = response.read() #讀取反饋的內容

如果沒有傳送data參數,urllib2使用GET方式的請求。

GET和POST請求的不同之處是POST請求通常有"副作用",

它們會由於某種途徑改變系統狀態(例如提交成堆垃圾到你的門口)。

Data同樣可以通過在Get請求的URL本身上面編碼來傳送。

import urllib2
import urllib
data = {}
data['name'] = 'WHY'
data['location'] = 'SDU'
data['language'] = 'Python'
url_values = urllib.urlencode(data)
print url_values
name=Somebody+Here&language=Python&location=Northampton
url = 'http://www.example.com/example.cgi'
full_url = url + '?' + url_values
data = urllib2.open(full_url)

這樣就實現了Data數據的Get傳送。

2.設置Headers到http請求

有一些站點不喜歡被程序(非人為訪問)訪問,或者發送不同版本的內容到不同的瀏覽器。

默認的urllib2把自己作為「Python-urllib/x.y」(x和y是Python主版本和次版本號,例如Python-urllib/2.7),

這個身份可能會讓站點迷惑,或者乾脆不工作。

瀏覽器確認自己身份是通過User-Agent頭,當你創建了一個請求對象,你可以給他一個包含頭數據的字典。

下面的例子發送跟上面一樣的內容,但把自身模擬成Internet Explorer。

(多謝大家的提醒,現在這個Demo已經不可用了,不過原理還是那樣的)。

import urllib
import urllib2
url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'WHY',
'location' : 'SDU',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()

以上就是python利用urllib2通過指定的URL抓取網頁內容的全部內容,非常簡單吧,希望對大家能有所幫助。

❹ 如何用python抓取網頁特定內容

Python用做數據處理還是相當不錯的,如果你想要做爬蟲,Python是很好的選擇,它有很多已經寫好的類包,只要調用,即可完成很多復雜的功能,此文中所有的功能都是基於BeautifulSoup這個包。
1 Pyhton獲取網頁的內容(也就是源代碼)
page = urllib2.urlopen(url)
contents = page.read()
#獲得了整個網頁的內容也就是源代碼 print(contents)
url代表網址,contents代表網址所對應的源代碼,urllib2是需要用到的包,以上三句代碼就能獲得網頁的整個源代碼
2 獲取網頁中想要的內容(先要獲得網頁源代碼,再分析網頁源代碼,找所對應的標簽,然後提取出標簽中的內容)

❺ 如何用Python爬蟲抓取網頁內容

首先,你要安裝requests和BeautifulSoup4,然後執行如下代碼.

importrequests
frombs4importBeautifulSoup

iurl='http://news.sina.com.cn/c/nd/2017-08-03/doc-ifyitapp0128744.shtml'

res=requests.get(iurl)

res.encoding='utf-8'

#print(len(res.text))

soup=BeautifulSoup(res.text,'html.parser')

#標題
H1=soup.select('#artibodyTitle')[0].text

#來源
time_source=soup.select('.time-source')[0].text


#來源
origin=soup.select('#artibodyp')[0].text.strip()

#原標題
oriTitle=soup.select('#artibodyp')[1].text.strip()

#內容
raw_content=soup.select('#artibodyp')[2:19]
content=[]
forparagraphinraw_content:
content.append(paragraph.text.strip())
'@'.join(content)
#責任編輯
ae=soup.select('.article-editor')[0].text

這樣就可以了

❻ python怎樣接收http協議返回的一個zip包

從頭開始,找到兩個換行符(前面是HEADER,包括伺服器、日期、長度、是否支持斷點等信息),後面的就是文件內容了.

❼ Python Http 請求

如果要進行客戶端和伺服器端之間的消息傳遞,我們可以使用HTTP協議請求

通過URL網址傳遞信息,可以直接在URL中寫上要傳遞的信息,也可以由表單進行傳遞(表單中的信息會自動轉化為URL地址中的數據,通過URL地址傳遞)

備註:已經取得資源,並將資源添加到響應中的消息體

可以向伺服器提交數據,是一種比較安全的數據傳遞方式,比如在登錄時,經常使用 POST 請求發送數據

請求伺服器存儲一個資源,通常需要制定存儲的位置

請求伺服器刪除一個資源

請求獲取對應的 HTTP 報頭信息

可以獲得當前URL所支持的請求類型

狀態碼:200 OK
表明請求已經成功. 默認情況下成功的請求將會被緩存

不同請求方式對於請求成功的意義如下:
GET:已經取得資源,並將資源添加到響應中的消息體.
HEAD:作為消息體的頭部信息
POST:在消息體中描述此次請求的結果

請求成功對於PUT 和 DELETE 來說並不是200 ok 而是 204 所代表的沒有資源 (或者 201 所代表的當一個資源首次被創建成功

以下是常見狀態碼及含義

❽ python裡面request怎麼讀取html代碼

使用Python 3的requests模塊抓取網頁源碼並保存到文件示例:

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編碼方式)

熱點內容
ubuntu設置ftp許可權 發布:2025-02-06 01:54:07 瀏覽:598
奇瑞5哪個配置值得買 發布:2025-02-06 01:51:56 瀏覽:551
黑鯊手機哪裡看安卓版本 發布:2025-02-06 01:36:04 瀏覽:802
如何配置2檸檬酸 發布:2025-02-06 00:57:26 瀏覽:435
積木源碼 發布:2025-02-06 00:55:26 瀏覽:546
變分的運演算法則 發布:2025-02-06 00:55:21 瀏覽:776
x2哪個配置性價比高 發布:2025-02-06 00:40:12 瀏覽:110
豬哥亮訪問張菲 發布:2025-02-06 00:37:52 瀏覽:571
期貨賬戶怎麼改密碼 發布:2025-02-06 00:32:35 瀏覽:280
qq自動上傳群文件 發布:2025-02-06 00:26:25 瀏覽:112