python 爬虫The One的 数据两种方式
2016-04-12 14:00
507 查看
系统:windows
语言:python
工具:pycharm
需要的包:beautifulsoup、requests
安装以上的包,方法类似,
手动方式
任务:爬300条。采用多线程、非多线程
单线程:
多线程:四个线程,一般电脑四核。
执行时间比较:
单线程:
一辈子,有多少真心话,是以玩笑的方式说了出去? by 佚名
1269
很想打一个不说话的电话,只要你在电话那端,我可以枕着电话筒就好。 from 《蒙马特遗书》
1276
自以为用这颗小小的心脏包裹住了波澜壮阔,给这片山川湖海围上了栅栏,不放出那匹脱缰野马,这样就不会有人从我假意的冷淡里,拎出些滚烫的秘密。 by 陈大力
use: 331.22 s
多线程:
一辈子,有多少真心话,是以玩笑的方式说了出去? by 佚名
1269
很想打一个不说话的电话,只要你在电话那端,我可以枕着电话筒就好。 from 《蒙马特遗书》
1276
自以为用这颗小小的心脏包裹住了波澜壮阔,给这片山川湖海围上了栅栏,不放出那匹脱缰野马,这样就不会有人从我假意的冷淡里,拎出些滚烫的秘密。 by 陈大力
use: 81.81 s
All subprocesses done.
语言:python
工具:pycharm
需要的包:beautifulsoup、requests
安装以上的包,方法类似,
手动方式
任务:爬300条。采用多线程、非多线程
单线程:
import requests import bs4 import time import re root_url = 'http://wufazhuce.com' def get_url(num): return root_url + '/one/' + str(num) def get_data(url): response = requests.get(url) soup = bs4.BeautifulSoup(response.text, "html.parser") try: for meta in soup.select('div'): if meta['class'][0] == 'one-cita': str = meta.string except: a = 1 finally: b = 2 soup.div['class'] = "one-cita" # 获取编号 strNum = soup.head.title.contents[0][4:8] print(strNum) patt = re.compile(r'^[\d\s]{1,7}$', re.I|re.U|re.X) # 判断strNum是否为数字 if patt.match(strNum): # 获取文字内容 strContent = str.strip() print(strContent) f=open('f.txt','a',encoding='utf-8') f.write(strNum) f.write(':') f.write(strContent) f.write('\n') f.close() if __name__ == '__main__': start = time.time() for i in range(300): get_data(get_url(1000+i)) end = time.time() print('use: %.2f s' % (end - start))
多线程:四个线程,一般电脑四核。
from multiprocessing import Pool import os import requests import bs4 import time import re root_url = 'http://wufazhuce.com' def get_url(num): return root_url + '/one/' + str(num) def get_data(url): response = requests.get(url) soup = bs4.BeautifulSoup(response.text, "html.parser") try: for meta in soup.select('div'): if meta['class'][0] == 'one-cita': str = meta.string except: a = 1 finally: b = 2 soup.div['class'] = "one-cita" # 获取编号 strNum = soup.head.title.contents[0][4:8] print(strNum) patt = re.compile(r'^[\d\s]{1,7}$', re.I|re.U|re.X) # 判断strNum是否为数字 if patt.match(strNum): # 获取文字内容 strContent = str.strip() print(strContent) # 打开文件 f=open('aaa.txt','a',encoding='utf-8') f.write(strNum) f.write(':') f.write(strContent) f.write('\n') f.close() def long_time_task(num): i= num * 75 while i <= 75 * (num + 1): get_data(get_url(1000+i)) i += 1 if __name__=='__main__': start = time.time() print('Parent process %s.' % os.getpid()) p = Pool(4) for i in range(4): p.apply_async(long_time_task, args=(i,)) print('Waiting for all subprocesses done...') p.close() p.join() end = time.time() print('use: %.2f s' % (end - start)) print('All subprocesses done.')
执行时间比较:
单线程:
一辈子,有多少真心话,是以玩笑的方式说了出去? by 佚名
1269
很想打一个不说话的电话,只要你在电话那端,我可以枕着电话筒就好。 from 《蒙马特遗书》
1276
自以为用这颗小小的心脏包裹住了波澜壮阔,给这片山川湖海围上了栅栏,不放出那匹脱缰野马,这样就不会有人从我假意的冷淡里,拎出些滚烫的秘密。 by 陈大力
use: 331.22 s
多线程:
一辈子,有多少真心话,是以玩笑的方式说了出去? by 佚名
1269
很想打一个不说话的电话,只要你在电话那端,我可以枕着电话筒就好。 from 《蒙马特遗书》
1276
自以为用这颗小小的心脏包裹住了波澜壮阔,给这片山川湖海围上了栅栏,不放出那匹脱缰野马,这样就不会有人从我假意的冷淡里,拎出些滚烫的秘密。 by 陈大力
use: 81.81 s
All subprocesses done.
相关文章推荐
- python面对对象编程-------5:获取属性的四种办法:@property, __setattr__(__getattr__) ,descriptor
- python部落刷题宝学到的内置函数(二)
- python 实时遍历日志文件
- 完全用Python工作---Harness the power of Python
- wxpython ImportError: DLL load failed: 找不到指定的模块
- 《统计学习方法》-KNN笔记和python源码
- python字符串连接方法分析
- python去除文件中空格、Tab及回车的方法
- Python脚本实现虾米网签到功能
- 浅析python 中__name__ = '__main__' 的作用
- Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
- python排序
- Python与自然语言处理_第二期_NLTK入门之NLTK的基本使用
- 从BUG工具redmine上获取数据后借助python模块pycha 画出BUG分析类报表
- python list对象
- python以下划线开头的变量名含义
- PYTHON 併行
- python小模块--anydbm,shelve模块
- python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法
- Python与自然语言处理_第一期_NLTK入门之环境搭建