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解析发往本机的数据包示例 (解析数据包)
Jan 16 Python
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
对python中dict和json的区别详解
Dec 18 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
使用python实现kNN分类算法
Oct 16 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 Python
Python多个MP4合成视频的实现方法
Jul 16 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
vue实现通讯录功能
2018/07/14 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python中int()函数的用法浅析
2017/10/17 Python
Django在win10下的安装并创建工程
2017/11/20 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
校园标语大全
2014/06/19 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
商务代表岗位职责
2015/02/15 职场文书
见习期个人总结
2015/03/05 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers