Python多线程爬虫实战_爬取糗事百科段子的实例


Posted in Python onDecember 15, 2017

多线程爬虫:即程序中的某些程序段并行执行,

合理地设置多线程,可以让爬虫效率更高

糗事百科段子普通爬虫和多线程爬虫

分析该网址链接得出:

https://www.qiushibaike.com/8hr/page/页码/

多线程爬虫也就和JAVA的多线程差不多,直接上代码

'''
#此处代码为普通爬虫
import urllib.request
import urllib.error
import re
headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
for i in range(1,2):
 url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
 pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
 pattern = '<div class="content">.*?<span>(.*?)</span>(.*?)</div>'
 datalist = re.compile(pattern,re.S).findall(pagedata)
 for j in range(0,len(datalist)):
  print("第"+str(i)+"页第"+str(j)+"个段子内容是:")
  print(datalist[j])
'''
'''
#此处为多线程介绍代码
import threading #导入多线程包
class A(threading.Thread): #创建一个多线程A
 def __init__(self):  #必须包含的两个方法之一:初始化线程
  threading.Thread.__init__(self)
 def run(self):   #必须包含的两个方法之一:线程运行方法
  for i in range(0,11):
   print("我是线程A")
class B(threading.Thread): #创建一个多线程A
 def __init__(self):  #必须包含的两个方法之一:初始化线程
  threading.Thread.__init__(self)
 def run(self):   #必须包含的两个方法之一:线程运行方法
  for i in range(0,11):
   print("我是线程B")
t1 = A() #线程实例化
t1.start() #线程运行
t2 = B()
t2.start()
'''

#此处为修改后的多线程爬虫
#使用多线程进行奇偶页的爬取
import urllib.request
import urllib.error
import re
import threading
headers = ("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
class one(threading.Thread): #爬取奇数页内容
 def __init__(self):
  threading.Thread.__init__(self)
 def run(self):
  for i in range(1,12,2):
   url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
   pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
   pattern = '<div class="content">.*?<span>(.*?)</span>(.*?)</div>'
   datalist = re.compile(pattern,re.S).findall(pagedata)
   for j in range(0,len(datalist)):
    print("第"+str(i)+"页第"+str(j)+"段子内容为:")
    print(datalist[j])

class two(threading.Thread): #爬取奇数页内容
 def __init__(self):
  threading.Thread.__init__(self)
 def run(self):
  for i in range(2,12,2):
   url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
   pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
   pattern = '<div class="content">.*?<span>(.*?)</span>(.*?)</div>'
   datalist = re.compile(pattern,re.S).findall(pagedata)
   for j in range(0,len(datalist)):
    print("第"+str(i)+"页第"+str(j)+"段子内容为:")
    print(datalist[j])
t1 = one()
t2 = two()
t1.start()
t2.start()

以上这篇Python多线程爬虫实战_爬取糗事百科段子的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python2.7删除文件夹和删除文件代码实例
Dec 18 Python
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python入门之三角函数全解【收藏】
Nov 08 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
对python3标准库httpclient的使用详解
Dec 18 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
python中数据库like模糊查询方式
Mar 02 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 #Python
python matplotlib中文显示参数设置解析
Dec 15 #Python
MAC中PyCharm设置python3解释器
Dec 15 #Python
Python通过matplotlib画双层饼图及环形图简单示例
Dec 15 #Python
python绘制双柱形图代码实例
Dec 14 #Python
Python实现一个Git日志统计分析的小工具
Dec 14 #Python
用matplotlib画等高线图详解
Dec 14 #Python
You might like
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
功能强大的php文件上传类
2016/08/29 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
Extjs中DisplayField的日期或者数字格式化扩展
2010/09/03 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
jQuery列表检索功能实现代码
2017/07/17 jQuery
angular的输入和输出的使用方法
2018/09/22 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
Python实现简单多线程任务队列
2016/02/27 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
大学本科生的个人自我评价
2013/12/09 职场文书
超市端午节活动方案
2014/01/23 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
电子商务专业求职信
2014/07/10 职场文书
商务经理岗位职责
2014/07/30 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
入党后的感想
2015/08/10 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
详解如何用Python实现感知器算法
2021/06/18 Python