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中的round()方法
May 15 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Python的Flask框架中配置多个子域名的方法讲解
Jun 07 Python
python图像常规操作
Nov 11 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
Python参数类型以及常见的坑详解
Jul 08 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python 画函数曲线示例
Dec 04 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 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
关于文本留言本的分页代码
2006/10/09 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
python实用代码片段收集贴
2015/06/03 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Python中包的用法及安装
2020/02/11 Python
python 实现两个线程交替执行
2020/05/02 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python