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 Queue模块详解
Nov 30 Python
Python中endswith()函数的基本使用
Apr 07 Python
python模块之sys模块和序列化模块(实例讲解)
Sep 13 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
django的settings中设置中文支持的实现
Apr 28 Python
20行python代码的入门级小游戏的详解
May 05 Python
Python3实现建造者模式的示例代码
Jun 28 Python
Python读写锁实现实现代码解析
Nov 28 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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/05/10 PHP
php中apc缓存使用示例
2013/12/25 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
php实现的操作excel类详解
2016/01/15 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
AngularJS实现星星等级评分功能
2016/09/24 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
分享python数据统计的一些小技巧
2016/07/21 Python
Python中作用域的深入讲解
2018/12/10 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
python七夕浪漫表白源码
2019/04/05 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python pandas用法最全整理
2019/08/04 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
日语专业推荐信
2013/11/12 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
运动会广播稿20字
2015/08/19 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python