局部优化与整体效果 新增时间>节省时间 权衡利弊
原代码
from selenium import webdriver
import requests,time
url_l=[]
with open('DISTINCT_url.txt', 'r', encoding='utf-8') as fo:
for i in fo:
url = '%s%s' % ('http://', i.replace('\n', ''))
url_l.append(url)
le,c=len(url_l),0
# browser = webdriver.Firefox()
# browser = webdriver.Chrome() firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference('permissions.default.image', 2)#某些firefox只需要这个
firefox_profile.set_preference('browser.migration.version', 9001)#部分需要加上这个
#禁用css
firefox_profile.set_preference('permissions.default.stylesheet', 2)
#禁用flash
firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
# #禁用js
# firefox_profile.set_preference('javascript.enabled', 'false') browser = webdriver.Firefox(firefox_profile=firefox_profile) # browser = webdriver.Firefox()
import random for i in url_l:
c+=1
with open('DISTINCT_url.break.log', 'r', encoding='utf-8') as fc:
for breaker in fc:
break
if c<int(breaker):
continue
if c%50==0:
time.sleep(random.randint(0,3))
with open('DISTINCT_url.break.log', 'w', encoding='utf-8') as flog:
flog.write(str(c)) print(c,'/',le,'---',i)
try:
# browser = webdriver.Firefox()
# browser.minimize_window()
# browser.set_window_size(10,10)
browser.get(i)
page_source = browser.page_source
# browser.quit()
if 'us.com/adunion.js' not in page_source:
s='%s%s' % (i.replace('http://',''),'\n')
print(s)
with open('DISTINCT_url.404.txt', 'a', encoding='utf-8') as fr:
fr.write(s)
print('NOT-IN','---',i)
else:
print('OK')
#browser.close()
except Exception as e:
time.sleep(1)
with open('DISTINCT_url.404.ex.txt', 'a', encoding='utf-8') as fex:
es='%s%s' %(str(e),'\n')
fex.write(es)
print(es) 优化后
优化原因:上述代码在404情况下执行时间相对
requests.get(i)
if req.status_code !
获取返回码时间长 但是404的url在总url池中的比例相对非404但需要检测html广告代码的部分少,而该部分必须调动浏览器执行;由此相当与对该部分增加了requests的时间消耗,而其代价已经超过了获取404url的节省的时间
新增时间>节省时间
弊大于利
from selenium import webdriver
import requests, time url_l = []
with open('DISTINCT_url.txt', 'r', encoding='utf-8') as fo:
for i in fo:
url = '%s%s' % ('http://', i.replace('\n', ''))
url_l.append(url)
le, c = len(url_l), 0
# browser = webdriver.Firefox()
# browser = webdriver.Chrome() firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference('permissions.default.image', 2) # 某些firefox只需要这个
firefox_profile.set_preference('browser.migration.version', 9001) # 部分需要加上这个
# 禁用css
firefox_profile.set_preference('permissions.default.stylesheet', 2)
# 禁用flash
firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false')
# #禁用js
firefox_profile.set_preference('javascript.enabled', 'false') browser = webdriver.Firefox(firefox_profile=firefox_profile) # browser = webdriver.Firefox()
import random while True:
for i in url_l:
c += 1
with open('DISTINCT_url.break.log', 'r', encoding='utf-8') as fc:
for breaker in fc:
break
if c < int(breaker):
continue
if c % 50 == 0:
time.sleep(random.randint(0, 3))
with open('DISTINCT_url.break.log', 'w', encoding='utf-8') as flog:
flog.write(str(c)) print(c, '/', le, '---', i)
try:
try:
req = requests.get(i)
if req.status_code != 404:
try:
browser.get(i)
page_source = browser.page_source
if 'us.com/adunion.js' not in page_source:
s = '%s%s' % (i.replace('http://', ''), '\n')
with open('DISTINCT_url.404.txt', 'a', encoding='utf-8') as fr:
fr.write(s)
print('NOT-IN', '---', i)
else:
print('OK', '---', i)
except Exception as e:
time.sleep(1)
with open('DISTINCT_url.404.ex.txt', 'a', encoding='utf-8') as fex:
es = '%s%s' % (str(e), '\n')
fex.write(es)
else:
with open('DISTINCT_url.404.txt', 'a', encoding='utf-8') as fr:
s = '%s%s' % (i.replace('http://', ''), '\n')
print('404---', s)
fr.write(s)
req.close()
except:
continue
except:
continue
局部优化与整体效果 新增时间>节省时间 权衡利弊的更多相关文章
- 十个节省时间的MySQL命令
十个节省时间的MySQL命令 2011-02-23 16:07 黄永兵 译 IT168 字号:T | T 编者在工作中积累起来了一些MySQL命令行客户端技巧,这些技巧或多或少会帮助您节省大量的时间. ...
- css004 用样式继承节省时间
css004 用样式继承节省时间 继承:inherit 继承可以简化样式表 继承是有局限的,有些样式没法继承,如:border,width,height
- 该用Python还是SQL?4个案例教你节省时间
在数据分析行业,对数据提出的每一个问题都可以用多种潜在的语言和工具包来回答.每种语言都有其优势,它们之间也存在着不同的区别.不能否认的是,有些操作用Python执行起来要比SQL更加高效.这篇文章分享 ...
- Vim新手节省时间的10多个小技巧
Vim新手节省时间的10多个小技巧 Vim 是很多开发者的首选编辑器,通过设置正确的命令和快捷方式,它可以帮你更快的完成工作.这篇文章我们为 Vim 新手提供一些快捷键等方面的小技巧,帮你提升工作效率 ...
- Python 开发者节省时间的 10 个小技巧
Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ...
- 这7个npm命令将帮助您节省时间
作为JavaScript开发人员,NPM是我们一直使用的东西,并且我们的脚本在终端上连续运行. 如果我们可以节省一些时间呢? 1.直接从npm打开文档 如果我们可以直接使用npm跳转到软件包的文档怎么 ...
- 详解 JDK8 新增的日期时间类
JDK8 新增的日期时间类 在本人之前的博文<处理时间的类 -- System类.Date类 .SimpleDateFormat类 与 Calendar类>中,讲到过表示时间的类,有三类: ...
- 分享一下Eclipse中节省时间的技巧吧
[初级技巧] ★★ 鼠标放在一个类名上面,会显示Javadoc.也可以通过屏幕下方的Javadoc面板来查看(你可以把它看成是MSDN的Java版). ★ 每个函数的第一行,左边有个圆圈,单击这个圆圈 ...
- MySQL 获得当前日期时间(以及时间的转换)
1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() curr ...
随机推荐
- [Python3网络爬虫开发实战] 1.4.2-MongoDB安装
MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档.数组及文档数组,非常灵活. MongoDB支持多 ...
- python3.x Day6 多线程
线程???进程????区别???何时使用??? 进程:是程序以一个整体的形式暴露给操作系统管理,里边包含了对各种资源的调用,内存的使用,对各种资源的管理的集合,这就叫进程 线程:是操作系统最小的调度单 ...
- UvaLive 4917 Abstract Extract (模拟)
题意: 给定一篇文章, 文章中有段落, 段落中有句子. 句子只会以'!' , '.' , '?' 结尾, 求出每段中含有与他下面同样是该段落中相同单词数最多的句子, 注意, 单词忽略大小写, 重复的单 ...
- Mvc Action可以通过jsonp方式调取
jsonp其实是一种特殊的数据获取格式,所以在Aicton直接调取的时候肯定会出现问题,下面代码是对于jsonp调取做的处理 protected virtual ActionResult Create ...
- HDU 5420 Victor and Proposition
Victor and Proposition Time Limit: 6000ms Memory Limit: 524288KB This problem will be judged on HDU. ...
- [luoguP1022] 计算器的改良(模拟)
传送门 超级大模拟.. 代码 #include <cstdio> #include <cstring> #include <iostream> #define is ...
- 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab
t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...
- Linux下汇编语言学习笔记31 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- linux 常见名词及命令(四)
yum仓库的配置 yum仓库的配置文件存放在/etc/yum.repos.d/目录中. 第一步:切换到/etc/yum.repos.d/目录中. 第二步:使用vim编辑器打开一个名为'rhel7.re ...
- 51nod 1298 圆与三角形 (计算几何)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1298 求出圆心到三条线段的最短距离,然后判断是否有顶点在圆外,就把全部情 ...