1. 多线程爬虫:即程序中的某些程序段并行执行,
    合理地设置多线程,可以让爬虫效率更高
    糗事百科段子普通爬虫和多线程爬虫
    分析该网址链接得出:
    https://www.qiushibaike.com/8hr/page/页码/
  2.  
  3. 多线程爬虫也就和JAVA的多线程差不多,直接上代码
  1. '''
  2. #此处代码为普通爬虫
  3. import urllib.request
  4. import urllib.error
  5. import re
  6.  
  7. 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")
  8. opener = urllib.request.build_opener()
  9. opener.addheaders = [headers]
  10. urllib.request.install_opener(opener)
  11. for i in range(1,2):
  12. url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
  13. pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
  14. pattern = '<div class="content">.*?<span>(.*?)</span>(.*?)</div>'
  15. datalist = re.compile(pattern,re.S).findall(pagedata)
  16. for j in range(0,len(datalist)):
  17. print("第"+str(i)+"页第"+str(j)+"个段子内容是:")
  18. print(datalist[j])
  19. '''
  20.  
  21. '''
  22. #此处为多线程介绍代码
  23. import threading #导入多线程包
  24. class A(threading.Thread): #创建一个多线程A
  25. def __init__(self): #必须包含的两个方法之一:初始化线程
  26. threading.Thread.__init__(self)
  27. def run(self): #必须包含的两个方法之一:线程运行方法
  28. for i in range(0,11):
  29. print("我是线程A")
  30.  
  31. class B(threading.Thread): #创建一个多线程A
  32. def __init__(self): #必须包含的两个方法之一:初始化线程
  33. threading.Thread.__init__(self)
  34. def run(self): #必须包含的两个方法之一:线程运行方法
  35. for i in range(0,11):
  36. print("我是线程B")
  37.  
  38. t1 = A() #线程实例化
  39. t1.start() #线程运行
  40. t2 = B()
  41. t2.start()
  42. '''
  43.  
  44. #此处为修改后的多线程爬虫
  45. #使用多线程进行奇偶页的爬取
  46. import urllib.request
  47. import urllib.error
  48. import re
  49. import threading
  50.  
  51. 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")
  52. opener = urllib.request.build_opener()
  53. opener.addheaders = [headers]
  54. urllib.request.install_opener(opener)
  55. class one(threading.Thread): #爬取奇数页内容
  56. def __init__(self):
  57. threading.Thread.__init__(self)
  58. def run(self):
  59. for i in range(1,12,2):
  60. url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
  61. pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
  62. pattern = '<div class="content">.*?<span>(.*?)</span>(.*?)</div>'
  63. datalist = re.compile(pattern,re.S).findall(pagedata)
  64. for j in range(0,len(datalist)):
  65. print("第"+str(i)+"页第"+str(j)+"段子内容为:")
  66. print(datalist[j])
  67.  
  68. class two(threading.Thread): #爬取奇数页内容
  69. def __init__(self):
  70. threading.Thread.__init__(self)
  71. def run(self):
  72. for i in range(2,12,2):
  73. url = "https://www.qiushibaike.com/8hr/page/"+str(i)+"/"
  74. pagedata = urllib.request.urlopen(url).read().decode("utf-8","ignore")
  75. pattern = '<div class="content">.*?<span>(.*?)</span>(.*?)</div>'
  76. datalist = re.compile(pattern,re.S).findall(pagedata)
  77. for j in range(0,len(datalist)):
  78. print("第"+str(i)+"页第"+str(j)+"段子内容为:")
  79. print(datalist[j])
  80. t1 = one()
  81. t2 = two()
  82. t1.start()
  83. t2.start()
  1.  

【Python爬虫实战】多线程爬虫---糗事百科段子爬取的更多相关文章

  1. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  2. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  3. [爬虫]用python的requests模块爬取糗事百科段子

    虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更 ...

  4. Python爬虫爬取糗事百科段子内容

    参照网上的教程再做修改,抓取糗事百科段子(去除图片),详情见下面源码: #coding=utf-8#!/usr/bin/pythonimport urllibimport urllib2import ...

  5. python学习(十六)写爬虫爬取糗事百科段子

    原文链接:爬取糗事百科段子 利用前面学到的文件.正则表达式.urllib的知识,综合运用,爬取糗事百科的段子先用urllib库获取糗事百科热帖第一页的数据.并打开文件进行保存,正好可以熟悉一下之前学过 ...

  6. 8.Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  7. Python爬虫实战之爬取糗事百科段子

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  8. Python爬虫实战之爬取糗事百科段子【华为云技术分享】

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  9. 芝麻HTTP:Python爬虫实战之爬取糗事百科段子

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

随机推荐

  1. 文件上传失败 -nginx报错 client intended to send too large body: 1331696 bytes

    location / { root /data/fastdfs/data; include gzip.conf; ngx_fastdfs_module; client_max_body_size 10 ...

  2. piwik优化之定时任务生成统计数据

    piwik的ui界面,使用起来是无比的慢,让苏南大叔不得不对比wordpress的使用体验.当然了,如果你的服务器足够强大,这些都是小事儿.官方对此给出了一系列的优化建议,大家可以读一下:https: ...

  3. python 中变量引用问题

    普通变量,如a=10,str="fdaf",它们在函数内的值是不会被带到函数外的,除非在函数内加上global,而引用是惰性原则,从最近的同名父级同名变量引用值 其它变量如列表,字 ...

  4. mysql编译安装(详细)(转载)

    mysql编译安装(详细)   一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从 ...

  5. .net4.0、.net4.5、.net4.6 三者对系统的要求

    net4.0 支持的操作系统 Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Serv ...

  6. [蓝桥杯]ALGO-86.算法训练_矩阵乘法

    问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...

  7. android 退出程序解决内存释放so的问题

    做Android程序的时候发现一个问题,由于用到了so库,当应用程序退出了,但是手机变得很卡,点击"设置"查看应用程序,界面显示着可以点击"强制关闭". 由于这 ...

  8. STL基础--String

    String 构造 string s1("Hello"); string s2("Hello", 3); //s2: Hel string s3(s1, 2); ...

  9. bzoj 4811: [Ynoi2017]由乃的OJ

    树链剖分,用zkw线段树维护每条链两个方向上对每一位的变换情况,由于位数较少,可以用两个unsigned long long表示 #include<cstdio> typedef unsi ...

  10. mysql 5.6 binlog组提交实现原理(转载)

    http://blog.itpub.net/15480802/viewspace-1411356/ Redo组提交 Redo提交流程大致如下 lock log->mutex write redo ...