前景提要
在用網路爬蟲爬取鬥破蒼穹**的時候,發現構建多頁urls時,urls的順序不是按照1,2,3,4…的順序排列,而是處於3,2,4,8,1…這種無序的狀態。其他的寫入txt文件等,都可以正常工作,此時寫入txt的文章順序是打亂的,但是都可以都可以爬下來。
經檢查後發現是乙個很小的問題導致了這種情況。
錯誤的**
import requests
import re
import time
headers=
f=open('doupocangqiong.txt','a+')
def get_info(url):
res=requests.get(url,headers=headers)
if res.status_code==200:
contents=re.findall('',res.content.decode('utf-8'))
for content in contents:
f.write(content+'\n')
else:
pass
if __name__=='__main__':
urls=.html'.format(number) for number in range(1, 1666)}
for url in urls:
get_info(url)
print(url)
f.close()
此時輸出的結果是亂序的
urls也是亂序。
import requests
import re
import time
headers=
f=open('doupocangqiong.txt','a+')
def get_info(url):
res=requests.get(url,headers=headers)
if res.status_code==200:
contents=re.findall('',res.content.decode('utf-8'))
for content in contents:
f.write(content+'\n')#這個地方還是有一點不是特別明白
else:
pass
if __name__=='__main__':
urls=[''.format(number) for number in range(1, 1666)]
for url in urls:
get_info(url)
print(url)
f.close()
此時輸出的**是正確的。
錯誤原因
構造多頁urls時使用了urls=構造了乙個類似字典的東西,於是就導致了亂序的發生。
解決方法
將urls=
換成urls=【】就可以解決掉亂序的問題,成功輸出順序的**。。
關於TCP重傳 亂序和重複的問題
tcp是一種巨複雜的協議,本篇文章旨在簡單說明一些資料傳輸過程中常見的問題,對於涉及的演算法目前並不會詳細闡述 主要是個人能力原因 tcp提供兩種重傳的機制,一種是基於時間的超時重傳,一種是基於接收端反饋訊息的快速重傳。相比之下前者占用更少的網路頻寬,但是效率很低。而後者則相反。下面我們來具體看一下...
format格式化的使用
說明 format 通過 來替換 進行格式化,叫做佔位符 形式的格式化,是從c語言繼承過來的,printf style 字串格式化語法 1,s i love s.format python 會列印 i love python 2,s i love i am s.format python 18 會列...
python的format方法使用詳解
從python2.6開始,新增了一種格式化字串的函式str.format 它增強了字串格式化的功能。基本語法是通過 和 來代替以前的 format方法可以接受無限個引數,位置可以不按順序。不指定format方法的關鍵字引數 format hello world 不設定指定位置,按預設順序 hello...