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实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
Python 正则表达式的高级用法
Dec 04 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
开源Web应用框架Django图文教程
Mar 09 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
python实现三次样条插值
Dec 17 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
python如何实现数据的线性拟合
Jul 19 Python
如何用Python 加密文件
Sep 10 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中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
python 实现插入排序算法
2012/06/05 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python实现简易Web爬虫详解
2018/01/03 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
python实现堆排序的实例讲解
2020/02/21 Python
python实现随机加减法生成器
2020/02/24 Python
Python字典dict常用方法函数实例
2020/11/09 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
行政助理的职责
2013/11/14 职场文书
企业安全标语
2014/06/07 职场文书
语文课外活动总结
2014/08/27 职场文书
实习介绍信模板
2015/01/30 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android
php去除deprecated的实例方法
2021/11/17 PHP