python学习之使用multiprocessing.dummy多线程爬虫
来源:互联网 发布:比特彗星端口设置 编辑:程序博客网 时间:2024/05/16 19:07
#-*- coding:utf8 -*-import requestsimport re# 导入正则表达式的模块from multiprocessing.dummy import Pool as ThreadPoolimport time#导入下面这几行用中文就不会出错import sysreload(sys)sys.setdefaultencoding("utf-8")def changepage(url,total_page): """获得所有url的列表""" nowPage = int(re.search('pageNum=(\d+)',url).group(1))#re.search只找到第一个符合条件的 .group(1)是只要一个括号里面的 all_link=[] for i in range(nowPage,total_page+1): # 替换 link = re.sub('pageNum=\d+','pageNum=%s'%i,url,re.S) all_link.append(link) return all_linkdef geteveryclass(url): html = requests.get(url) classinfo=[] everyclass = re.findall('(deg="0" >.*?</li>)',html.text,re.S) for each in everyclass: info = getinfo(each) classinfo.append(info) print classinfodef getinfo(eachclass): """getinfo用来从每个课程块中提取出我们需要的信息""" info = {} info['title'] = re.search('class="lessonimg" title="(.*?)>',eachclass,re.S).group(1) info['content'] = re.search('display: none;">(.*?)</p>',eachclass,re.S).group(1) return info######################################################################################################################if __name__ == "__main__": url = 'http://www.jikexueyuan.com/course/?pageNum=1' url_list = changepage(url,5) pool = ThreadPool(4)#4核 time1 = time.time() results = pool.map(geteveryclass, url_list)#需要执行的方法和地址列表 pool.close() pool.join()#等待线程都结束后再执行主模块 time2 = time.time() print u'多线程耗时:' + str(time2-time1)
0 0
- python学习之使用multiprocessing.dummy多线程爬虫
- 【Python】使用 multiprocessing.dummy 执行多线程任务
- python multiprocessing dummy Pool 使用
- 【转】使用 multiprocessing.dummy 执行多线程任务
- python多线程multiprocessing使用
- python多线程multiprocessing
- python多线程爬虫学习--urllib的使用
- 二、PYTHON 学习笔记之multiprocessing
- python多进程变成学习之multiprocessing
- python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
- 使用multiprocessing包规避Python GIL多线程串行问题
- python并发之multiprocessing
- python之multiprocessing.pool
- python 爬虫及multiprocessing包——多线程爬取并解析百度贴吧某贴小trick
- python多线程爬虫学习--Queue
- Python爬虫之<XPath与多线程爬虫>
- python爬虫——多进程multiprocessing
- python之Thread和multiprocessing
- Android 高版本API方法在低版本系统上的兼容性处理
- org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
- 大型网站技术-2. 云计算之OpenStack简述
- 神经网络发展史
- tcpdump 报文截取分析
- python学习之使用multiprocessing.dummy多线程爬虫
- 汇编语言第一个程序
- sicily 1006. Campus_mothod_2(Dijkstra算法)
- 不会改变操作对象内容的STL算法(元素查找,序列查找,统计元素个数,比较区间,找最值)
- c语言变量
- JAVA中indexOf函数和lastindexOf函数
- J2EE之13中规范初了解
- List 和 map 的赋值方式
- HBase 笔试题