python文字处理dummy_python学习之使用multiprocessing.dummy多线程爬虫
#-*- coding:utf8 -*-
import requests
import re# 導入正則表達式的模塊
from multiprocessing.dummy import Pool as ThreadPool
import time
#導入下面這幾行用中文就不會出錯
import sys
reload(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_link
def geteveryclass(url):
html = requests.get(url)
classinfo=[]
everyclass = re.findall('(deg="0" >.*?)',html.text,re.S)
for each in everyclass:
info = getinfo(each)
classinfo.append(info)
print classinfo
def getinfo(eachclass):
"""getinfo用來從每個課程塊中提取出我們需要的信息"""
info = {}
info['title'] = re.search('class="lessonimg" title="(.*?)>',eachclass,re.S).group(1)
info['content'] = re.search('display: none;">(.*?)
',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)
總結
以上是生活随笔為你收集整理的python文字处理dummy_python学习之使用multiprocessing.dummy多线程爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获奖感言的建议
- 下一篇: TypeScript等无法获取到歌曲播放