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的Django框架部署的一些建议
Apr 09 Python
介绍Python中的fabs()方法的使用
May 14 Python
Python字符串和字典相关操作的实例详解
Sep 23 Python
python合并同类型excel表格的方法
Apr 01 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
推荐10款最受Python开发者欢迎的Python IDE
Sep 16 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
Python拼接字符串的7种方法总结
Nov 01 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
Python终端输出彩色字符方法详解
Feb 11 Python
Pytorch 中的optimizer使用说明
Mar 03 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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
jQuery的一些注意
2006/12/06 Javascript
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
简单说明Python中的装饰器的用法
2015/04/24 Python
python删除列表中重复记录的方法
2015/04/28 Python
python编程实现归并排序
2017/04/14 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
python应用文件读取与登录注册功能
2019/09/23 Python
python 实现return返回多个值
2019/11/19 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
团干部培训方案
2014/06/03 职场文书