工作中需要判断某个文本中的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. CVE-2018-15688 systemd dhcp6组件越界写漏洞分析

    编译的话 , 用 ubuntu 18.10, 没有 patch 的源码下载路径 https://codeload.github.com/poettering/systemd/zip/3941f8329 ...

  2. 检测到在集成的托管管道模式下不适用的ASP.NET设置

    解决方法是修改web.config如下: <system.webServer> <validation validateIntegratedModeConfiguration=&qu ...

  3. 大数据【一】集群配置及ssh免密认证

    八月迷情,这个月会对大数据进行一个快速的了解学习. 一.所需工具简介 首先我是在大数据实验一体机上进行集群管理学习,管理五台实验机,分别为master,slave1,slave2,slave3,cli ...

  4. Python+Selenium笔记(十五)调用JS

    (一) 方法 方法 简单说明 execute_async_script(script, args) 异步执行JS代码 script:被执行的JS代码 args:js代码中的任意参数 execute_s ...

  5. LeetCode题解之 Search in a Binary Search Tree

    1.题目描述 2.问题分析 利用递归遍历二叉查找树. 3.代码 TreeNode* searchBST(TreeNode* root, int val) { if (root == NULL) ret ...

  6. Linux 进程管理之四大名捕

    本文来自网络,著作权归原创作者所有,不做任何商业用途. 一.四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”.内功卓越的 ...

  7. Windows Server 2012 R2 创建AD域

        前言 我们按照下图来创建第一个林中的第一个域.创建方法为先安装一台Windows服务器,然后将其升级为域控制器.然后创建第二台域控制器,一台成员服务器与一台加入域的Win8计算机. 环境 网络 ...

  8. C#程序如何捕捉未try/catch的异常——不弹“XXX已停止工作”报错框

    诚意满满直接上代码: static void Main(string[] args) { //Main函数中增加此句 AppDomain.CurrentDomain.UnhandledExceptio ...

  9. Hadoop HBase概念学习系列之HRegion服务器(三)

    所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...

  10. ndroid动态创建按钮并添加事件

    public class MyActivity extends Activity { /** * Called when the activity is first created. */ @Over ...