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

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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

    利用Python制作一個(gè)動(dòng)物識(shí)別小程序

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

    Python的圖像處理庫(kù)Pillow安裝與使用教程

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

    Python目錄下文件讀取方式

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

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

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

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

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

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

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

    python中字典和列表的相互嵌套問(wèn)題詳解

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

最新評(píng)論

奎屯市| 河东区| 临漳县| 松潘县| 尤溪县| 宁陵县| 比如县| 米脂县| 临颍县| 延安市| 四川省| 宁强县| 梓潼县| 北海市| 略阳县| 张家界市| 莱西市| 呼玛县| 石景山区| 潼关县| 民县| 卫辉市| 清徐县| 祥云县| 利辛县| 达拉特旗| 察雅县| 江城| 韶关市| 丹寨县| 西青区| 延长县| 交口县| 金寨县| 寿宁县| 柳江县| 河北区| 乌苏市| 甘德县| 睢宁县| 玉田县|