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 ljust rjust center输出
Sep 06 Python
Python去掉字符串中空格的方法
Mar 11 Python
Phantomjs抓取渲染JS后的网页(Python代码)
May 13 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
对Python中type打开文件的方式介绍
Apr 28 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
python实现一次性封装多条sql语句(begin end)
Jun 06 Python
Python return语句如何实现结果返回调用
Oct 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
深入PHP许愿墙模块功能分析
2013/06/25 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php网站地图生成类示例
2014/01/13 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
php实现用户登陆简单实例
2017/04/04 PHP
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
搭建一个nodejs脚手架的方法步骤
2019/06/28 NodeJs
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python实现低通滤波器代码
2020/02/26 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
Python sublime安装及配置过程详解
2020/06/29 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
教师节商场活动方案
2014/02/13 职场文书
读群众路线心得体会
2014/03/07 职场文书
企业精细化管理实施方案
2014/03/23 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
2015年音乐教学工作总结
2015/07/22 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers