最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中使用socket發(fā)送HTTP請求數(shù)據(jù)接收不完整問題解決方法

 更新時間:2015年02月04日 09:38:26   投稿:junjie  
這篇文章主要介紹了Python中使用socket發(fā)送HTTP請求數(shù)據(jù)接收不完整問題解決方法,本文使用一個循環(huán)解決了數(shù)據(jù)不完整問題,需要的朋友可以參考下

由于工作的需求,需要用python做一個類似網(wǎng)絡(luò)爬蟲的采集器。雖然Python的urllib模塊提供更加方便簡潔操作,但是涉及到一些底層的需求,如手動設(shè)定User-Agent,Referer等,所以選擇了直接用socket進(jìn)行設(shè)計。當(dāng)然,這樣的話,需要對HTTP協(xié)議比較熟悉,HTTP協(xié)議這里就不做講解了。整個python的代碼如下:

#!/usr/bin env python
import socket
host="www.baidu.com"
se=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
se.connect((host,80))
se.send("GET / HTTP/1.1\n")
se.send("Accept:text/html,application/xhtml+xml,*/*;q=0.8\n")
#se.send("Accept-Encoding:gzip,deflate,sdch\n")
se.send("Accept-Language:zh-CN,zh;q=0.8,en;q=0.6\n")
se.send("Cache-Control:max-age=0\n")
se.send("Connection:keep-alive\n")
se.send("Host:"+host+"\r\n")
se.send("Referer:http://www.baidu.com/\n")
se.send("user-agent: Googlebot\n\n")
print se.recv(1024)

代碼運行正常,但是發(fā)現(xiàn)一個比較重要的問題,運行結(jié)果只返回了HTTP的頭部信息,網(wǎng)頁的內(nèi)容則沒有被返回。網(wǎng)上查找了很多資料,一無所獲,經(jīng)過一夜的思考,突然想到了一個問題,有可能我請求的資源非常大,一個網(wǎng)絡(luò)的IP包的大小,它是受很多因素制約的,最典型的便是MTU(最大傳輸單元),那么會不會我請求的數(shù)據(jù)被分割了,HTTP的頭部信息只是一部分,其它數(shù)據(jù)還在傳輸或者緩沖區(qū)呢?于是做了這樣一個遍歷:

while True:
  buf = se.recv(1024)
  if not len(buf):
    break
  print buf

這樣發(fā)現(xiàn)所有請求的數(shù)據(jù)均被返回了,看來要想做好網(wǎng)絡(luò)編程,深入理解TCP/IP協(xié)議是非常必要的。

相關(guān)文章

  • python3實現(xiàn)隨機(jī)數(shù)

    python3實現(xiàn)隨機(jī)數(shù)

    這篇文章主要為大家詳細(xì)介紹了python3實現(xiàn)隨機(jī)數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python進(jìn)行數(shù)據(jù)預(yù)處理的4個重要步驟

    python進(jìn)行數(shù)據(jù)預(yù)處理的4個重要步驟

    在數(shù)據(jù)科學(xué)項目中,數(shù)據(jù)預(yù)處理是最重要的事情之一,本文詳細(xì)給大家介紹python進(jìn)行數(shù)據(jù)預(yù)處理的4個重要步驟:拆分訓(xùn)練集和測試集,處理缺失值,處理分類特征和進(jìn)行標(biāo)準(zhǔn)化處理,需要的朋友可以參考下
    2023-06-06
  • python tkinter之 復(fù)選、文本、下拉的實現(xiàn)

    python tkinter之 復(fù)選、文本、下拉的實現(xiàn)

    這篇文章主要介紹了python tkinter之 復(fù)選、文本、下拉的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 利用Python制作一個動物識別小程序

    利用Python制作一個動物識別小程序

    動物識別是計算機(jī)視覺和模式識別領(lǐng)域的重要研究方向,它涉及通過圖像或視頻數(shù)據(jù)自動識別和分類不同種類的動物,隨著數(shù)字圖像技術(shù)和機(jī)器學(xué)習(xí)方法的快速發(fā)展,動物識別在實際應(yīng)用中具有廣泛的潛力,本文將給大家介紹如何基于Python制作一個動物識別小程序
    2023-10-10
  • Python的圖像處理庫Pillow安裝與使用教程

    Python的圖像處理庫Pillow安裝與使用教程

    Pillow庫是Python中用于圖像處理的開源庫,提供了豐富的圖像處理功能,如圖像讀取、保存、裁剪、調(diào)整大小、旋轉(zhuǎn)、添加文字等,這篇文章主要給大家介紹了關(guān)于Python的圖像處理庫Pillow安裝與使用的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Python目錄下文件讀取方式

    Python目錄下文件讀取方式

    這篇文章主要介紹了Python目錄下文件讀取方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python爬蟲中urllib庫的進(jìn)階學(xué)習(xí)

    Python爬蟲中urllib庫的進(jìn)階學(xué)習(xí)

    本篇文章主要介紹了Python爬蟲中urllib庫的進(jìn)階學(xué)習(xí)內(nèi)容,對此有興趣的朋友趕緊學(xué)習(xí)分享下。
    2018-01-01
  • spyder 在控制臺(console)執(zhí)行python文件,debug python程序方式

    spyder 在控制臺(console)執(zhí)行python文件,debug python程序方式

    這篇文章主要介紹了spyder 在控制臺(console)執(zhí)行python文件,debug python程序方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python使用cx_Freeze庫生成msi格式安裝文件的方法

    Python使用cx_Freeze庫生成msi格式安裝文件的方法

    這篇文章主要介紹了Python使用cx_Freeze庫生成msi格式安裝文件的方法,結(jié)合實例形式分析了Python基于cx_Freeze庫生成msi格式安裝文件操作技巧與相關(guān)問題解決方法,需要的朋友可以參考下
    2018-07-07
  • python中字典和列表的相互嵌套問題詳解

    python中字典和列表的相互嵌套問題詳解

    這篇文章主要為大家詳細(xì)介紹了python中字典和列表相互嵌套的問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論

正定县| 海淀区| 延边| 芦山县| 海宁市| 和田县| 法库县| 远安县| 平昌县| 治多县| 习水县| 伊宁市| 大余县| 遂川县| 庆元县| 宁陵县| 新和县| 濮阳市| 武城县| 若羌县| 榆中县| 翁牛特旗| 清流县| 清丰县| 永嘉县| 景宁| 秦安县| 林西县| 仁寿县| 延寿县| 横山县| 郎溪县| 蒲江县| 奉节县| 湟中县| 尤溪县| 万山特区| 五华县| 枣庄市| 华阴市| 张家口市|