原代码

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
												

局部优化与整体效果 新增时间>节省时间 权衡利弊的更多相关文章

  1. 十个节省时间的MySQL命令

    十个节省时间的MySQL命令 2011-02-23 16:07 黄永兵 译 IT168 字号:T | T 编者在工作中积累起来了一些MySQL命令行客户端技巧,这些技巧或多或少会帮助您节省大量的时间. ...

  2. css004 用样式继承节省时间

       css004 用样式继承节省时间 继承:inherit 继承可以简化样式表 继承是有局限的,有些样式没法继承,如:border,width,height

  3. 该用Python还是SQL?4个案例教你节省时间

    在数据分析行业,对数据提出的每一个问题都可以用多种潜在的语言和工具包来回答.每种语言都有其优势,它们之间也存在着不同的区别.不能否认的是,有些操作用Python执行起来要比SQL更加高效.这篇文章分享 ...

  4. Vim新手节省时间的10多个小技巧

    Vim新手节省时间的10多个小技巧 Vim 是很多开发者的首选编辑器,通过设置正确的命令和快捷方式,它可以帮你更快的完成工作.这篇文章我们为 Vim 新手提供一些快捷键等方面的小技巧,帮你提升工作效率 ...

  5. Python 开发者节省时间的 10 个小技巧

    Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ...

  6. 这7个npm命令将帮助您节省时间

    作为JavaScript开发人员,NPM是我们一直使用的东西,并且我们的脚本在终端上连续运行. 如果我们可以节省一些时间呢? 1.直接从npm打开文档 如果我们可以直接使用npm跳转到软件包的文档怎么 ...

  7. 详解 JDK8 新增的日期时间类

    JDK8 新增的日期时间类 在本人之前的博文<处理时间的类 -- System类.Date类 .SimpleDateFormat类 与 Calendar类>中,讲到过表示时间的类,有三类: ...

  8. 分享一下Eclipse中节省时间的技巧吧

    [初级技巧] ★★ 鼠标放在一个类名上面,会显示Javadoc.也可以通过屏幕下方的Javadoc面板来查看(你可以把它看成是MSDN的Java版). ★ 每个函数的第一行,左边有个圆圈,单击这个圆圈 ...

  9. MySQL 获得当前日期时间(以及时间的转换)

    1.1 获得当前日期+时间(date + time)函数:now() 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp()   curr ...

随机推荐

  1. [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)

    最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为5个中文字词,输出为一个中文字词. 目录 关于RNN 语料预处理 搭建数据集 ...

  2. uglifyjs压缩批处理,.bat文件启动

    我们不可能每次都打开cmd去键入压缩执行代码,容易写错不说(如上面那个结果图),还耗时,想想都会让人疯掉. 懒人有懒法,花了点功夫,折腾了一个批处理文件,以后,想要压缩JS,只要双击运行这个.bat文 ...

  3. 「 Luogu P2196 」 挖地雷

    # 解题思路 跑 $\text{n}$ 遍 $\text{spfa}$ 并记录路径,找到比当前最长路长的就更新答案,并且将路径也更新,注意起点的处理. # 附上代码 #include <iost ...

  4. python3.x Day5 subprocess模块!!

    subprocess模块: # subprocess用来替换多个旧模块和函数 os.system os.spawn* os.popen* popen2.* commands.* subprocess简 ...

  5. linux netstat-查看Linux中网络系统状态信息

    博主推荐:更多网络测试相关命令关注 网络测试  收藏linux命令大全 netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况. 语法 netstat(选项) ...

  6. android framework navigationbar自定义

    需要实现的目标:在navigationbar上显示录像预览,并且点击按钮可以显示/隐藏NavigationBar 参考文章: http://blog.csdn.net/yanlai20/article ...

  7. Bzoj3038 上帝造题的七分钟2 线段树

    Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1135  Solved: 509 Description XLk觉得<上帝造题的七分钟>不太 ...

  8. 洛谷P1257 平面上的最接近点对

    n<=10000个点,求欧几里德距离最小的一对点. 经典分治,把这些点按x排序,分成两半,每边分别算答案,答案是左边的最小,右边的最小,左右组起来的最小三者的最小.发现只有左右组的有点难写. 假 ...

  9. 牛客网小白月赛1 B,I

    #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> ...

  10. Uva - 12230 Crossing Rivers (数学期望)

    你住在村庄A,每天需要过很多条河到另一个村庄B上班,B在A的右边,所有的河都在A,B之间,幸运的是每条船上都有自由移动的自动船, 因此只要到达河左岸然后等船过来,在右岸下船,上船之后船的速度不变.现在 ...