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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
python 二分查找和快速排序实例详解
Oct 13 Python
Python实现冒泡排序的简单应用示例
Dec 11 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
彻底理解Python中的yield关键字
Apr 01 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
python实现局域网内实时通信代码
Dec 22 Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
python如何写try语句
Jul 14 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
第七节 类的静态成员 [7]
2006/10/09 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
使用PHP编写发红包程序
2015/07/22 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
关于python 跨域处理方式详解
2020/03/28 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
大学秋游活动方案
2014/02/11 职场文书
四风存在的原因分析
2014/02/11 职场文书
周年庆典主持词
2014/04/02 职场文书
婚庆公司计划书
2014/09/15 职场文书
单位介绍信格式范文
2015/05/04 职场文书
教师培训简讯
2015/07/20 职场文书
调解协议书范本
2016/03/21 职场文书