欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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進行設(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)文章

  • 如何使用Python讀取.xlsx指定行列

    如何使用Python讀取.xlsx指定行列

    讀取xlsx的整列數(shù)據(jù)很容易,但是要讀取指定sheet的指定列,這個相信大多數(shù)程序員都不會,下面這篇文章主要給大家介紹了關(guān)于如何使用Python讀取.xlsx指定行列的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • pycharm導(dǎo)入源碼的具體步驟

    pycharm導(dǎo)入源碼的具體步驟

    在本篇內(nèi)容里小編給大家整理了關(guān)于pycharm導(dǎo)入源碼的具體步驟,有需要的朋友們可以參考學(xué)習(xí)下。
    2020-08-08
  • Python Pygame實戰(zhàn)之水果忍者游戲的實現(xiàn)

    Python Pygame實戰(zhàn)之水果忍者游戲的實現(xiàn)

    大家還記得水果忍者這個游戲嗎?想當(dāng)年,這也是個風(fēng)靡全國的游戲,基本每個人都玩過。今天小編就用Python中的Pygame庫復(fù)刻這一經(jīng)典游戲,需要的可以參考一下
    2022-02-02
  • python下的opencv畫矩形和文字注釋的實現(xiàn)方法

    python下的opencv畫矩形和文字注釋的實現(xiàn)方法

    今天小編就為大家分享一篇python下的opencv畫矩形和文字注釋的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python爬蟲實現(xiàn)網(wǎng)頁信息抓取功能示例【URL與正則模塊】

    Python爬蟲實現(xiàn)網(wǎng)頁信息抓取功能示例【URL與正則模塊】

    這篇文章主要介紹了Python爬蟲實現(xiàn)網(wǎng)頁信息抓取功能,涉及Python使用URL與正則模塊針對網(wǎng)頁信息的讀取與匹配相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • python爬蟲框架feapder的使用簡介

    python爬蟲框架feapder的使用簡介

    這篇文章主要介紹了python爬蟲框架feapde的使用簡介,幫助大家更好的理解和學(xué)習(xí)使用python爬蟲,感興趣的朋友可以了解下
    2021-04-04
  • python繪制鉛球的運行軌跡代碼分享

    python繪制鉛球的運行軌跡代碼分享

    這篇文章主要介紹了python繪制鉛球的運行軌跡代碼分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • python中threading.Semaphore和threading.Lock的具體使用

    python中threading.Semaphore和threading.Lock的具體使用

    python中的多線程是一個非常重要的知識點,本文主要介紹了python中threading.Semaphore和threading.Lock的具體使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-08-08
  • Python?matplotlib繪制散點圖配置(萬能模板案例)

    Python?matplotlib繪制散點圖配置(萬能模板案例)

    這篇文章主要介紹了Python?matplotlib繪制散點圖配置(萬能模板案例),散點圖是指在??回歸分析???中,數(shù)據(jù)點在直角坐標(biāo)系平面上的?分布圖???,散點圖表示因變量隨??自變量???而?變化???的大致趨勢,據(jù)此可以選擇合適的函數(shù)??對數(shù)???據(jù)點進行?擬合
    2022-07-07
  • pandas的唯一值、值計數(shù)以及成員資格的示例

    pandas的唯一值、值計數(shù)以及成員資格的示例

    今天小編就為大家分享一篇pandas的唯一值、值計數(shù)以及成員資格的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論