Python 制作糗事百科爬虫实例


Posted in Python onSeptember 22, 2016

早上起来闲来无事做,莫名其妙的就弹出了糗事百科的段子,转念一想既然你送上门来,那我就写个爬虫到你网站上爬一爬吧,一来当做练练手,二来也算找点乐子。

其实这两天也正在接触数据库的内容,可以将爬取下来的数据保存在数据库中,以待以后的利用。好了,废话不多说了,先来看看程序爬取的数据结果

Python 制作糗事百科爬虫实例

值得一提的是,我在程序中想一下子爬取糗事百科 30 页的内容,但是出现了连接错误,当我把页数降到 20 页的时候,程序就可以正常的跑起来了,不知道是什么原因,渴望知道的大神可以告诉我一声,感激不尽。

程序非常简单,直接上源代码咯

# coding=utf8

import re
import requests
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


def getnewpage(url, total):
 nowpage = int(re.search('(\d+)', url, re.S).group(1))
 urls = []

 for i in range(nowpage, total + 1):
  link = re.sub('(\d+)', '%s' % i, url, re.S)
  urls.append(link)

 return urls


def spider(url):
 html = requests.get(url)
 selector = etree.HTML(html.text)

 author = selector.xpath('//*[@id="content-left"]/div/div[1]/a[2]/@title')
 content = selector.xpath('//*[@id="content-left"]/div/div[2]/text()')
 vote = selector.xpath('//*[@id="content-left"]/div/div[3]/span/i/text()')

 length = len(author)
 for i in range(0, length):
  f.writelines('作者 : ' + author[i] + '\n')
  f.writelines('内容 :' + str(content[i]).replace('\n','') + '\n')
  f.writelines('支持 : ' + vote[i] + '\n\n')


if __name__ == '__main__':

 f = open('info.txt', 'a')
 url = 'http://www.qiushibaike.com/text/page/1/'
 urls = getnewpage(url, 20)

 pool = ThreadPool(4)
 pool.map(spider,urls)
 f.close()

如果其中有不懂得部分,可以依次参考我的前三篇文章。

Python 相关文章推荐
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python实现批量修改图片格式和尺寸
Jun 07 Python
python实现输入数字的连续加减方法
Jun 22 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
Jul 09 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
Pytorch转onnx、torchscript方式
May 25 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 Python
七个非常实用的Python工具包总结
Jun 15 Python
Python 使用SMTP发送邮件的代码小结
Sep 21 #Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 #Python
Python中将字典转换为列表的方法
Sep 21 #Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 #Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
Sep 21 #Python
python if not in 多条件判断代码
Sep 21 #Python
python中range()与xrange()用法分析
Sep 21 #Python
You might like
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python验证码识别的方法
2015/07/10 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
实例详解Python装饰器与闭包
2019/07/29 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
opencv实现图像平移效果
2021/03/24 Python
委托书范文
2014/04/02 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
课外科技活动总结
2014/08/27 职场文书
委托书的写法
2014/08/30 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
个人工作保证书
2015/02/28 职场文书
勇敢的心观后感
2015/06/09 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
python代码实现备忘录案例讲解
2021/07/26 Python