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条件和循环的使用方法
Nov 01 Python
python中zip()方法应用实例分析
Apr 16 Python
小小聊天室Python代码实现
Aug 17 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
python绘制双柱形图代码实例
Dec 14 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
基于python进行桶排序与基数排序的总结
May 29 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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 google或baidu分页代码
2009/11/26 PHP
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
javascript 写类方式之四
2009/07/05 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
javascript模拟命名空间
2015/04/17 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
如何基于python实现脚本加密
2019/12/28 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
django实现模型字段动态choice的操作
2020/04/01 Python
苹果Mac升级:MacSales.com
2017/11/20 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
《燕子》教学反思
2014/02/18 职场文书
松材线虫病防治方案
2014/06/15 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
一般纳税人申请报告
2015/05/18 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
python元组打包和解包过程详解
2021/08/02 Python