Python爬虫实现爬取糗事百科段子 (26行代码简单实现)
今天给一个小可爱同学写的爬虫;
我的环境是:
MacOs 10.13.5;
Python 2.7.10;
用到的包:
urllib2
BeautifulSoup4
先自动生成获取段子的目标url:
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
然后用urllib2直接获取html内容,用headers头伪装浏览器;
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers = { 'User-Agent' : user_agent }try:request = urllib2.Request(url,headers = headers)response = urllib2.urlopen(request)content = response.read().decode('utf-8')
然后用BS4构建html的对象;
用html.parser来解析内容;
用find来找到需要查找的标签,用id和div来做区分,最后找到了页面的第一个段子的标签节点,使用get_text()去除标签部分;
注意到找到的内容是Unicode类型的,为了统一格式把它重新编码成utf-8类型,使用encode(utf-8);
然后把换行符去掉(因为直接获取到的字符串里包含很多换行符,影响阅读,所以去掉了换行符,换成统一格式比较好看);
content = response.read().decode('utf-8')
soup = BeautifulSoup(content,"html.parser")
aPage = soup.find('body').find('div', id = 'content').find('div', id = 'content-left').find('div')
print aPage.span.get_text().encode("utf-8").replace("\n","")+"\n"
然后依次访问这个页面剩下的所有段子,全部输出(也是去掉空格统一格式输出);
在页面最后一个段子的某个地方好像会有一个结果是"1",懒得找是在哪个节点下错查出来的…直接用len(s)来过滤掉这个字符串;
for i in aPage.find_next_siblings():s=i.span.get_text().encode("utf-8")if len(s)>3:print s.replace("\n","")+"\n"
最后异常处理部分就不写了…直接pass…ho ho ho ~
最终代码:
# -*- coding:utf-8 -*-
import urllib2
from bs4 import BeautifulSoupn = 2
#每页25个段子,一共13页
print "\n"
print "正在爬取糗事百科段子,请稍候:\n"
for page in range(1,n+1):print "\n\n第"+str(page)+"条段子:\n"url = 'http://www.qiushibaike.com/hot/page/' + str(page)user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers = { 'User-Agent' : user_agent }try:request = urllib2.Request(url,headers = headers)response = urllib2.urlopen(request)content = response.read().decode('utf-8')soup = BeautifulSoup(content,"html.parser")aPage = soup.find('body').find('div', id = 'content').find('div', id = 'content-left').find('div')print aPage.span.get_text().encode("utf-8").replace("\n","")+"\n"for i in aPage.find_next_siblings():s=i.span.get_text().encode("utf-8")if len(s)>3:print s.replace("\n","")+"\n"except :pass
Python爬虫实现爬取糗事百科段子 (26行代码简单实现)相关推荐
- python爬虫经典段子_玩转python爬虫之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 【网络爬虫】爬取糗事百科段子
1.前言 自动爬取糗事百科段子,使用Python编写. 输出文件路径需根据实际自己修改哦,默认的是输出100条段子,终止条件可以自己设置. 另糗事百科可能会改版,如有问题,欢迎留言,或者自行更改正则表 ...
- python爬虫,爬取糗事百科并保存到文件中
#--*--coding:utf-8--*-- import re import urllib.request from urllib.error import URLError,HTTPError ...
- 网络爬虫---爬取糗事百科段子实战
Python网络爬虫 1.知识要求 掌握python基础语法 熟悉urllib模块知识 熟悉get方法 会使用浏览器伪装技术 如果您对相关知识遗忘了,可以点上面的相关知识链接,熟悉一下. 2.爬取糗事 ...
- Python之爬取糗事百科段子实战
"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 阅读本文大约6分钟,实战学习,老表建议你反复看,反复记,反复练. // 本文作者 王豪 ...
- python实现数据爬取——糗事百科爬虫项目
python实现数据爬取--糗事百科爬虫项目 # urllib.request 请求模块 import urllib.request # re 模块使 Python 语言拥有全部的正则表达式功能. i ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- Python爬虫实战之爬取糗事百科段子
Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...
- Python爬虫实战一之爬取糗事百科段子
点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...
- 【Python爬虫系列教程 28-100】小姐姐带你入门爬虫框架Scrapy、 使用Scrapy框架爬取糗事百科段子
文章目录 Scrapy快速入门 安装和文档: 快速入门: 创建项目: 目录结构介绍: Scrapy框架架构 Scrapy框架介绍: Scrapy框架模块功能: Scrapy Shell 打开Scrap ...
最新文章
- 独家 | 探索性文本数据分析的新手教程(Amazon案例研究)
- Google Pixel 3 XL 将可运行 Fuchsia 系统
- 和plc哪个简单点_怎么看PLC梯形图
- 360董事长周鸿伟在新员工入职培训上的讲话
- git远程强制更新到本地
- NeurIPS 2020 | 基于“单目标域样本”的领域自适应方法
- HTMLCSS常见问题整理(四)
- 20130828 到底我能赚多少钱?
- vba 自动排序_Excel表格自动排序,神了!
- SpringBoot 集成ElasticSearch(二)分页查询
- python中对象的定义_全面了解python中的类,对象,方法,属性
- 【Https(二】】实战 openssl 配置 tomcat
- 斐讯K2P B1 博通TTL刷机方法
- VBV大小-H.264
- 推荐16本平面设计书籍,学平面设计必看的书不要错过哦
- ip地址,二进制,十进制、ip地址的组成 重点、ip分割网段
- 龙讯7号 国芯发布龙芯电脑引争议
- 培养创造性思维的20个技巧!
- 九枝兰专访-----深入解读程序化购买以及行业现状(初篇)
- hin2vec 异质信息网络表示学习 个人笔记