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的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
用pandas按列合并两个文件的实例
Apr 12 Python
selenium+python 对输入框的输入处理方法
Oct 11 Python
python实现图片识别汽车功能
Nov 30 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
python实现excel公式格式化的示例代码
Dec 23 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
实现Python与STM32通信方式
2019/12/18 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
校园文化标语
2014/06/18 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python