工作中需要判断某个文本中的URL是否能正常访问,并且随机获取其中N行能正常访问的URL数据,我的思路是:读取文本每一行数据,用urlopen访问,将返回状态码为200的URL保存到一个列表,获得列表长度,使用random产生一个随机值作为列表下标,获取该行数据。具体实现如下:

 import urllib2,random
from sets import Set def get_responses(url):
global good_list
global bad_list
if not url.startswith("http:"):
http_url = "http://" + url
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1',}
try:
request = urllib2.Request(http_url, headers=headers)
resp = urllib2.urlopen(request)
print url
except urllib2.URLError, e:
print e
bad_list.append(url)
return 0 retcode = resp.getcode()
if retcode == 200:
good_list.append(url)
#return 1
else:
bad_list.append(url)
#return 0 def readFile():
try:
urllist = open(r'C:\Users\888\Desktop\urls.txt','r')
except IOError:
print "file does not exist.\n"
for item in urllist:
item = item.strip('\n')
r = get_responses(item) urllist.close()
print "Total URLs: %d, Good URLs:%d, Bad URLs: %d." %((len(good_list)+len(bad_list)),len(good_list),len(bad_list)) def writeFile(linenum):
result = []
linelen = len(good_list)
while len(result) < int(linenum):
s = random.randint(0,linelen-1)
result.append(good_list[s])
result = list(Set(result)) # Put the good_url in goodurl.txt file
try:
goodurl = open(r'C:\Users\888\Desktop\goodurl.txt','w+')
except IOError:
print "file does not exist.\n" for item in result:
goodurl.write(item+'\n')
goodurl.close() print "The mission is done, Please check the goodurl.txt file" if __name__ == "__main__":
good_list = []
bad_list = []
readFile()
writeFile(150)

Python实现随机读取文本N行数据的更多相关文章

  1. R语言学习笔记:读取前n行数据

    常规读取 一般我们读取文件时都会读取全部的文件然后再进行操作,因为R是基于内存进行计算的. data <- read.table("C:\\Users\\Hider\\Desktop\ ...

  2. Python中如何读取xls中的数据

    要想读取EXCEL中的数据,首先得下载xlrd包,地址:https://pypi.python.org/pypi/xlrd  安装方法:下载解压后,利用windows  dos命令进入解压目录eg,c ...

  3. python 去除Excel中的重复行数据

    导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...

  4. Hive随机取某几行数据

    order by rand() limit 100 1. 可用于普通随机筛选 2. 也可用于row_number() 等函数的排序里作为随机排序.

  5. [SoapUI] Groovy在SoapUI里获取Text文本第一行数据

    // get external txt file datadef groovyUtils =new com.eviware.soapui.support.GroovyUtils(context)def ...

  6. shell随机读取一行

    使用shell随机读取文件的一行数据 shuf -n1 file_name

  7. 简谈python从Oracle读取数据生成图形

    初次学习python,连接Oracle数据库,导出数据到Excel,再从Excel里面读取数据进行绘图,生成png保存出来. 1.涉及到的python模块(模块安装就不进行解释了): 1 import ...

  8. sql server 随机读取数据

    --sql server 随机读取数据 * FROM [tablename] ORDER BY NEWID() pk from [tablename] ORDER BY NEWID()) --这两个方 ...

  9. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

随机推荐

  1. IDEA项目搭建五——使用JRebel插件实现IDEA热部署

    使用IDEA开发时修改了html或js或java代码都需要编译启动浪费了很多时间,所以可以借助热部署插件实现自动编码,每次修改完代码保存后就可以刷新页面看效果很方便,热部署工具有很多在此只推荐JReb ...

  2. OSGI企业应用开发(二)Eclipse中搭建Felix运行环境

    上篇文章介绍了什么是OSGI以及使用OSGI构建应用的优点,接着介绍了两款常用的OSGI实现,分别为Apache Felix和Equinox,接下来开始介绍如何在Eclipse中使用Apache Fe ...

  3. 禅道项目管理软件 为提交Bug页面设置bug必填字段

    为提交Bug页面设置bug必填字段 by:授客 QQ:1033553122 测试环境: 禅道项目管理软件7.1.stable版本 注:仅适合windows版 步骤1.找到xampp\zentao\mo ...

  4. Sql server 索引详解

    参考资料:老K写的,http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html SQL索引在数据库优化中占有一个非常大的比例, 一个好的 ...

  5. 关于kernel-devel、kernel-header和kernel src的区别

    A kernel-header package would contain 'header files' needed by some applications which would be buil ...

  6. VMWare虚拟机安装Linux系统时安装界面显示不全的解决、Linux分区

    1.只有最下面的按钮不全(可以显示字的一部分):可以用Tab键操控进行下一步 2.只有一半左右的界面:用Alt+鼠标左键移动安装界面 3.关于Linux分区:如果想用Linux进行深入操作,尽量不要选 ...

  7. M5加密字符串

    private string GetMD5str(string oldStr) { //将输入转换为ASCII 字符编码 ASCIIEncoding enc = new ASCIIEncoding() ...

  8. 关于 Azure Windows VM 的磁盘和 VHD

    就像其他任何计算机一样,Azure 中的虚拟机将磁盘用作存储操作系统.应用程序和数据的位置. 所有 Azure 虚拟机都至少有两个磁盘,即 Windows 操作系统磁盘和临时磁盘. 操作系统磁盘基于映 ...

  9. Centos 6.5-yum安装出现错误解决方案

    最近在用Centos 6.5 的时候出现了以下情况: 遇到这种问题试试以下方法: 1.检查是否能上网:ping www.baidu.com 如果显示没有连接的话,就说明没网,也就无法使用yum 命令安 ...

  10. python基础学习3----列表

    一.字符格式化输出 占位符 %s s = string 字符串           %d d = digit 整数           %f f = float 浮点数 name = input(&q ...