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怎么学好python?
Oct 07 Python
Python常见文件操作的函数示例代码
Nov 15 Python
python 实现文件的递归拷贝实现代码
Aug 02 Python
python实现rest请求api示例
Apr 22 Python
python获取本地计算机名字的方法
Apr 29 Python
编写Python的web框架中的Model的教程
Apr 29 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
Django中reverse反转并且传递参数的方法
Aug 06 Python
详解python中的闭包
Sep 07 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
Oct 14 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
php实现求相对时间函数
2015/06/15 PHP
CI框架中数据库操作函数$this->db->where()相关用法总结
2016/05/17 PHP
jQuery后代选择器用法实例
2014/12/23 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
layui文件上传实现代码
2017/05/20 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
基于vue.js的分页插件详解
2017/11/27 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
Python常用内置模块之xml模块(详解)
2017/05/23 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python如何读取文件中图片格式
2020/01/13 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
社区活动总结报告
2014/05/05 职场文书
个人授权委托书范本
2014/09/14 职场文书
2015年教师新年寄语
2014/12/08 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
会议通知范文
2015/04/15 职场文书
家长反馈意见及建议
2015/06/03 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Java 数组内置函数toArray详解
2021/06/28 Java/Android
Redis+AOP+自定义注解实现限流
2022/06/28 Redis