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中处理列表之reverse()方法的使用教程
May 21 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
Pytorch模型转onnx模型实例
Jan 15 Python
Python中实现输入超时及如何通过变量获取变量名
Jan 18 Python
Python类中self参数用法详解
Feb 13 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
Jun 04 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
Python超详细分步解析随机漫步
Mar 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
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
Python正则表达式介绍
2012/08/06 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
python文件的md5加密方法
2016/04/06 Python
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
python中的django是做什么的
2020/07/31 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
买卖合同协议书范本
2014/10/18 职场文书
接收函格式
2015/01/30 职场文书
煤矿安全保证书
2015/02/27 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers