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定时采集摄像头图像上传ftp服务器功能实现
Dec 23 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
Python实现Mysql数据库连接池实例详解
Apr 11 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
python:解析requests返回的response(json格式)说明
Apr 30 Python
QML用PathView实现轮播图
Jun 03 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 Python
用python修改excel表某一列内容的操作方法
Jun 11 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
留言板翻页的实现详解
2006/10/09 PHP
php 运行效率总结(提示程序速度)
2009/11/26 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
JS开发常用工具函数(小结)
2019/07/04 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
numpy.array 操作使用简单总结
2019/11/08 Python
基于python中__add__函数的用法
2019/11/25 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
Delphi CS笔试题
2014/01/04 面试题
参观考察邀请函范文
2014/01/29 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
爱之链教学反思
2014/04/30 职场文书
2015年清明节活动总结
2015/02/09 职场文书
2015年电工工作总结
2015/04/10 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
赞助商致辞
2015/07/30 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python