python 线程池 分配任务给线程,爬取加入库。
2018-01-12 16:23
344 查看
import requests from guanjianzi import keylist as keys import re from conMySql import ConDb from multiprocessing.dummy import Pool as ThreadPool s=requests.Session() con=ConDb() def getlist(url): html=s.get(url).content.decode() res=r'<li class="li"><font class="date">(.*?)</font><a href="(.*?)" target="_blank">(.*?)</a><span class="new"></span></li>' li=re.findall(res,html) title=re.findall(r"<title>(.*?)</title>",html)[0] for x,y,z in li: y=url+str(y) y=re.sub(r"\/index\.html\.",'',y) html1=s.get(y).content.decode() text=str(html1) guanjianzi = {} num = 0 for key in keys: # 循环遍历关键字列表,查询关键字出现的次数 count = text.count(key) # count 关键字在本文中出现的次数 if count > 0: guanjianzi.update({key: count}) # 把关键字和出现的次数添加到字典中 num += count print(title,y,z,guanjianzi,num,x) sql=''' insert into urllist(source,urls,titles,keyname,keysum,date1) values('{}','{}','{}',"{}",'{}','{}') '''.format(title,y,z,guanjianzi,num,x) con.runSql(sql) if __name__ == '__main__': urls = ['http://www.ndrc.gov.cn/xwzx/xwfb/index.html','http://www.ndrc.gov.cn/zwfwzx/zxgg/index.htmm','http://www.ndrc.gov.cn/zwfwzx/xzxknew/index.html','http://www.ndrc.gov.cn/zcfb/zcfbl/index.html','http://www.ndrc.gov.cn/zcfb/gfxwj/index.html','http://www.ndrc.gov.cn/zcfb/zcfbgg/index.html','http://www.ndrc.gov.cn/zcfb/zcfbghwb/index.html','http://www.ndrc.gov.cn/zcfb/zcfbtz/index.html','http://www.ndrc.gov.cn/zcfb/jd/index.html','http://www.ndrc.gov.cn/yjzq/index.html'] t=ThreadPool(5) for url in urls: t.apply_async(getlist,args=(url,)) t.close() t.join() sql1='select max(bat) from urllist limit 1' bat=con.runSql(sql1)[0][0] bat=int(bat)+1 # print(bat) sql2="update urllist set bat='{}'".format(bat) con.runSql(sql2)
相关文章推荐
- python 8-5 如何使用线程池 线程池是指分配固定个数的线程,concurrentfutues下的ThreadPoolExecutor
- 两个带有线程池的方法分别执行两组线程任务,第二个方法需要等待第一组任务执行完毕
- 单元测试,定时任务里有spring线程池开的线程任务失败
- 线程池动态并安全地中断所有线程不需要使用shutdownnow()同时可以继续添加任务
- 【python】研究与实践 python线程池爬取某网的接口视频资源入库
- 简单线程系列5-单任务延迟线程池
- Python 定时执行线程 执行任务
- Python-多任务-线程
- 【学习笔记】多线程编程-线程池/任务/线程
- Java多线程并发之 fork jion ,不同线程之间互帮互助,最快完成线程池任务。
- 突破python缺陷,实现几种自定义线程池 以及进程、线程、协程的介绍
- python 线程及线程池
- python任务执行之线程,进程,与协程
- Python:线程、进程与协程(7)——线程池
- 多线程线程池控制一个方法的并发量 限制只有5个线程执行任务
- 线程池设置最多M线程执行N个任务
- Python高级 -- 03 多任务(线程、进程、协程)
- 一种利用线程池线程执行任务, 并能够结束超时任务的方法 (.NET实现)
- 任务,线程和同步(四)之ThreadPool(线程池)
- 图像检索服务器编写问题记录——服务端的任务队列线程分配的反思