python 批量查询网页导出结果_python批量查询网页的HTTP状态码
最近業(yè)余時(shí)間在改版一個(gè)網(wǎng)站,改版之前頻繁調(diào)整了一些欄目的屬性,包括欄目的層級(jí),這種最怕就是調(diào)整了欄目的從屬關(guān)系,導(dǎo)致了欄目的URL地址改變,一旦改版就導(dǎo)致整個(gè)欄目及其下面的文章頁(yè)地址變更,成為死鏈。而欄目有幾千個(gè),更加大意不得。
在欄目調(diào)整前,我把數(shù)據(jù)庫(kù)和程序復(fù)制出去新建了一個(gè)鏡像站,用鏡像站里調(diào)整,然后把欄目地址數(shù)據(jù)導(dǎo)出來(lái),然后前面批量加上線(xiàn)上域名,然后批量查詢(xún)組裝出來(lái)的地址是否能正常訪(fǎng)問(wèn),能訪(fǎng)問(wèn)就說(shuō)明沒(méi)問(wèn)題,返回404錯(cuò)誤就說(shuō)明調(diào)整后的欄目地址,是原來(lái)網(wǎng)站不存在的,就要排查錯(cuò)誤。
此時(shí)用python批量查詢(xún)網(wǎng)頁(yè)的HTTP狀態(tài)碼,就顯得很方便了,代碼如下:#coding=utf-8
import urllib,time
import StringIO
import pycurl
def get_http_status(url):
html = StringIO.StringIO()
c = pycurl.Curl()
myurl=url
c.setopt(pycurl.URL, myurl)
c.setopt(pycurl.WRITEFUNCTION, html.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.setopt(pycurl.CONNECTTIMEOUT, 60)
c.setopt(pycurl.TIMEOUT, 300)
c.setopt(c.HEADER, True)
c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")
ret = c.perform()
ret = html.getvalue()
if "200" in ret:
print url,c.getinfo(c.HTTP_CODE)
return 1
elif "404" in ret:
print url,c.getinfo(c.HTTP_CODE)
f = open('/Users/dcm007/Desktop/no.txt','a')
f.write(url+'\n')
f.close()
return 0
if __name__=="__main__":
urls=open('/Users/dcm007/Desktop/url.txt','r').readlines()
oknum=0
lostnum=0
for url in urls:
if get_http_status(url.strip()):
oknum+=1
else:
lostnum+=1
以上代碼的含義,從/Users/dcm007/Desktop/url.txt文件(一行一個(gè)URL)中一條一條地讀取數(shù)據(jù),并逐個(gè)查詢(xún)他們的HTTP狀態(tài)碼,并打印出來(lái)。若出現(xiàn)404狀態(tài)碼,就存到/Users/dcm007/Desktop/no.txt文件中(一行一個(gè)URL)。
總結(jié)
以上是生活随笔為你收集整理的python 批量查询网页导出结果_python批量查询网页的HTTP状态码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: graphpad如何检测方差齐_如何选择
- 下一篇: python九九乘法表右对齐_pytho