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 相关文章推荐
Python面向对象编程中的类和对象学习教程
Mar 30 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
Python的Django框架中模板碎片缓存简介
Jul 24 Python
Python socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
Python 正则表达式实现计算器功能
Apr 29 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
Python中遍历列表的方法总结
Jun 27 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
python标识符命名规范原理解析
Jan 10 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
Python非单向递归函数如何返回全部结果
Dec 18 Python
怎么用Python识别手势数字
Jun 07 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者的疑难问答(1)
2006/10/09 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
详解php中反射的应用
2016/03/15 PHP
jquery+thinkphp实现跨域抓取数据的方法
2016/10/15 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Python使用PIL模块生成随机验证码
2017/11/21 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
python nmap实现端口扫描器教程
2020/05/28 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
临床医师专业个人自我评价范文
2013/11/07 职场文书
配件采购员岗位职责
2013/12/03 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
工作求职自荐信
2014/06/13 职场文书
班级文化建设标语
2014/06/23 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
先进学校事迹材料
2014/12/30 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers