1. 程式人生 > >python3爬蟲requests.get(url)出現http 500錯誤

python3爬蟲requests.get(url)出現http 500錯誤

一直想要收集各種一些漏洞的詳細描述,但是如果直接去國家資訊保安漏洞庫,查詢,複製,太機械了,寶寶不想這麼做,漏洞編號我已經找好了,怎樣才能更快的收集它們對應的描述呢?當然是爬蟲了,說幹就幹。

說明

  • 漏洞編號存放於cn.txt文字中,cn.txt和python位於同一目錄中
  • 利用requests和beautifulsoup模組進行爬蟲。
  • 通過檢視網頁原始碼,發現漏洞資訊位於class=’d_ldjj’ 的p標籤中
  • 將爬到的漏洞描述,按行寫入“loudong.xls”excel檔案中

程式碼實現

import pyperclip  
from xlrd import open_workbook  
from
xlutils.copy import copy url='http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=' #browser=webdriver.Firefox() CNread=open('cn.txt') fw=open("loudong.xls","w") lines=CNread.readlines() k=len(lines) print(k) for i in range(k): requrl=''.join(['http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=',lines[i]]) print(requrl) webbrowser.open
(requrl) #requests會自動給連線加上\0A,即十六進位制中的換行'\n' res=requests.get(requrl) res.raise_for_status() soup=bs4.BeautifulSoup(res.text) #查詢需要的元素 inf=soup.select('.d_ldjj p') li=inf[1].getText() vun=li.split('\n')[1] fw.writelines(vun) print(vun)
  • 請注意,requrl能夠正常被開啟,但是requests總是出現錯誤HTTP 500
    requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201504-257%0A
  • 原來requests自動給requrl添加了%0A,導致不能訪問,剛開始我還以為是網站為了抵制爬蟲而設定的,後面發現,其他的網站也存在這種情況,且
    requests.get('http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201504-257')
    是正常的,所以‘%0A’並不是被訪問的網站加的,而是requets乾的,只要我們想辦法把它去掉就行,百度一下,%0A發現原來是十六進位制的換行,即’\n’,所以需要去掉換行,可將requrl按行分裂,然後取第一部分:
    res=requests.get(requrl.split('\n')[0])
  • 果然這樣修改後,執行成功,看著輸出的一個個漏洞資訊描述,感覺自己棒棒噠~為自己點贊!
  • 至於為什麼會出現這種情況,我也不知道,親愛的小夥伴,你知道嗎?知道的話,解答下唄,你有遇到這種情況嗎?