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描述器descriptor详解
Feb 03 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
Python2.7简单连接与操作MySQL的方法
Apr 27 Python
代码分析Python地图坐标转换
Feb 08 Python
python实现图片批量压缩程序
Jul 23 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
python Pexpect模块的使用
Dec 25 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查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
JScript的条件编译
2007/05/29 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
js实现图片实时时钟
2020/01/15 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python数据处理实战(必看篇)
2017/06/11 Python
python 中字典嵌套列表的方法
2018/07/03 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
Python学习笔记之函数的参数和返回值的使用
2019/11/20 Python
python保留小数位的三种实现方法
2020/01/07 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
Python运算符+与+=的方法实例
2021/02/18 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
公司端午节活动方案
2014/02/04 职场文书
幼儿教师工作感言
2014/02/14 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
优秀团支部申报材料
2014/12/26 职场文书
入党自荐书范文
2015/03/05 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
python实现高效的遗传算法
2021/04/07 Python