python 批量查询网页导出结果_python批量查询网页的HTTP状态码

最近业余时间在改版一个网站,改版之前频繁调整了一些栏目的属性,包括栏目的层级,这种最怕就是调整了栏目的从属关系,导致了栏目的URL地址改变,一旦改版就导致整个栏目及其下面的文章页地址变更,成为死链。而栏目有几千个,更加大意不得。

在栏目调整前,我把数据库和程序复制出去新建了一个镜像站,用镜像站里调整,然后把栏目地址数据导出来,然后前面批量加上线上域名,然后批量查询组装出来的地址是否能正常访问,能访问就说明没问题,返回404错误就说明调整后的栏目地址,是原来网站不存在的,就要排查错误。

此时用python批量查询网页的HTTP状态码,就显得很方便了,代码如下:#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文件(一行一个URL)中一条一条地读取数据,并逐个查询他们的HTTP状态码,并打印出来。若出现404状态码,就存到/Users/dcm007/Desktop/no.txt文件中(一行一个URL)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值