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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python代码编写计算器小程序
Mar 30 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
Python是什么 Python的用处
May 26 Python
python语言中有算法吗
Jun 16 Python
python中类与对象之间的关系详解
Dec 16 Python
Python实战之实现简易的学生选课系统
May 25 Python
python基础之文件操作
Oct 24 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
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
python操作文件的参数整理
2019/06/11 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
早读迟到检讨书
2014/01/24 职场文书
档案工作汇报材料
2014/08/21 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
年会邀请函范文
2015/01/30 职场文书
2015年团支部工作总结
2015/04/03 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
贷款工资证明范本
2015/06/12 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
爱国主题班会教案
2015/08/14 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书