您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

最简单的python爬虫案例,适合入门学习

时间:2020-02-17 11:25:16  来源:  作者:

Python从网页爬取数据,网上相关文章很多,但能让零基础初学者轻松上手的却很少。可能是有的作者觉得有些知识点太简单不值得花费精力讲,结果是难者不会会者不难,初学者常常因此而蒙圈。本人也是小白,刚摸索着爬了两个简单的网页数据,经历了初学者易犯的各种糊涂,特总结分享一下,希望能对小白们有用。

最简单的python爬虫案例,适合入门学习

 

1、本文代码环境:python3.7,requests模块、BeautifulSoup解析库

python爬网络数据,方法很多。不同的python版本、不同的模块、库,对应代码都不同。所以,在看他人代码时,需要搞清代码环境所用的版本和使用的模块库等信息。因为如果环境不同,相同的代码也可能没用。初学者往往看到一篇文章讲的代码,复制过来就用,结果就是各种错误,这就是因为环境不同造成的。

没有模块的,pip安装一下就好。安装方法:点击电脑左下角开始——输入cmd回车,弹出cmd.exe界面——在界面上输入pip install requests回车,稍后,提示安装成功即完成了requests模块的安装。BeautifulSoup解析库是属于bs4模块的一个功能块,所以,用pip安装时,要安装pip install bs4。

2、爬虫4部曲:发出请求——获得网页——解析内容——保存内容

建好了代码环境,就可以开始爬数据了,无论什么代码环境,爬虫核心都是这4步。对新手来说,每一步都不简单,我们通过一个简单的爬取一篇小说代码,来看看到底是怎么爬数据的。

3、爬取网络小说

 

最简单的python爬虫案例,适合入门学习

3-1 拟爬取的网络小说截图

如图3-1,我们试着把这篇小说爬下来保存为txt文件,按照爬虫4部曲,我们逐步来看:

1)、发出请求

用代码向网络发出请求,请求访问某个网址,首先我们得在代码中给出具体的网址信息,比如上面截图的网址是:https://www.biqiuge.com/book/4772/2940354.html

那这个网址是怎么得到的呢,常规方法是通过浏览器的开发者工具,我是用的360浏览器,点击右上角的工具菜单,点击开发者工具即可,打开后的界面如下图3-2:

最简单的python爬虫案例,适合入门学习

图3-2 开发者工具窗口

顶部菜单选择Network,中间圆圈选择Preview,通过选择左侧红色方框内的不同选项,观察Preview下部的内容,当能看到我们想要的文字时人(如图3-3),就说明找到了。

最简单的python爬虫案例,适合入门学习

图3-3 箭头指示的就是准备爬取的数据

这时点击Preview左侧的Header面板,得到下图3-4中的url就是我们要找的网址。复制后,粘贴到代码里就能发出请求了。

最简单的python爬虫案例,适合入门学习

图3-4 找到请求的网址

有细心的会看到,这个网址和我们平常浏览网页时地址栏里的网址一样啊,还用这么麻烦?

最简单的python爬虫案例,适合入门学习

3-5 浏览器地址栏网址

这两个网址确实是一样的,是不用这么麻烦,直接从地址栏复制就可以。但很多时候,我们要爬取的网页数据并不在浏览器地址栏的那个网址里,这个时候就需要通过上面的那个开发者工具方法去找。

有了网址,发出请求的代码为:

url = "https://www.biqiuge.com/book/4772/2940354.html"     #   要爬取数据的网址
response = requests.get(url)       #发出访问请求,获得对应网页

访问请求的反馈结果放在response里了,这时我们用print(response)看看这个结果到底是什么?运行结果为:<Response [200]>

这是个什么鬼?怎么不是我们想要的网页内容呢?解释一下:

运行结果的意思是:响应状态为成功。可以放心写后面的代码了。如果出现数字404,就是没找到页面的意思,响应不成功。响应结果还需要解析才能得到网页内容。

2)、获得网页

上面说了,已经请求访问并响应成功了,接下来就是如何获得具体网页内容了。

soup = BeautifulSoup(response.content, 'lxml')     # 将获得的网页内容解析写入soup备用

我们用print(soup)看一下结果,就会得到下图3-6的结果:

最简单的python爬虫案例,适合入门学习

3-6 代码得到的网页内容

内容与前面在Preview里看到的一样,说明已经成功获得了网页内容。

3)、解析网页内容,获得数据

所有要爬取的数据,都在上面的soup结果里,但还有更多是我们不需要的数据。所以接下来第3步就是对上面的结果内容进行操作,以获得我们想要的内容。

1)根据目标,我们首先要获得小说的标题和章节标题

在开发者工具里,分析网页内容,发现我们的目标之一小说和章节的标题分别位于下图所示位置:

最简单的python爬虫案例,适合入门学习

图3-7 找到标题所处位置

A、小说标题“圣墟”在下面两个位置都出现过,写解析代码就可以了:

<a href="/book/4772/">圣墟</a>
<a href='https://www.biqiuge.com/book/4772/' target='_blank' title="圣墟">圣墟</a>

很明显第一个相对比简单点,所以,我们通过解析第一个位置内容来提取出标题“圣墟”

t1 = soup.find('a', href="/book/4772/"').get_text()

代码解析: 上面两处标题都位于<a,....../a>之间,所以“a”就是我们要用的第一个参数,由于有a参数的代码还有很多,为了精准定位就是这个位置的a,我们发现属性href的值不同而且貌似是独一无二的,所以将其作为关键字放进代码里,就得到了此处的这段代码。然后用.get_text()将这段代码里的文字给爬取出来,就得到了我们最终想要的小说标题——“圣墟”。上面的代码如果将href的参数值改为:'https://www.biqiuge.com/book/4772/',也能得到相同的结果

B、章节标题在网页代码中也出现过多次,但是我们只需找到一处解析得到即可,根据上面的经验,我们选最简单的一处为:

<h1>第一章 沙漠中的彼岸花</h1>

编写代码:

t2 = soup.find('h1').get_text()

2)获得小说内容

继续分析网页代码,发现小说内容的位置为:

<div id="content" class="showtxt"><script>App2();</script><br /> 大漠孤烟直......

说明小说内容位于<div ....../div >之间,所以将div作为第一个参数,由于div出现了很多次,所以我们需要继续用此处独有的参数作为关键字,我们将id="content" class="showtxt"同时作为参数放到代码里,这样代码就为:

tt = soup.find('div', id="content", class="showtxt").get_text()

此时,由于class在python里代表“类”,为敏感词,作为关键字放在代码里容易混淆,所以我们将敏感词作为关键字时,需要在其后面加一个下划线,将代码class="showtxt"改为:class_="showtxt"。运行后,小说内容就已经在tt里了。我们可以通过print(tt)看到效果。

4)、保存内容

虽然小说标题、内容都已经爬取到了,但到哪里看呢,我们不可能每次都用python用print()运行后看。我们可以将刚才爬取到的标题、内容,写入到一个txt文件里。这就用到os模块了。


 

此时运行程序,就能在e盘发现已新生成了文件“小说.txt文件",打开,发现,所有想要的内容已经写入到文件里了如图3-8。但是小说内容没有换行,阅读起来不方便,且前面有个多余的app2()。

 

最简单的python爬虫案例,适合入门学习

图3-8 爬取的效果

为了达到更好的效果,我们将代码:

tt = soup.find('div', id="content", class="showtxt").get_text()

优化为:

tt = soup.find('div', id="content", class_="showtxt").text.replace(' ','n').replace('app2();','n')

即将app2()和空格符都替换为换行符。运行后得到效果为:

 

最简单的python爬虫案例,适合入门学习

图3-9 优化后最终的爬取结果

至此,一个简单的爬取就完成了。

其实,该网址内容完全可以直接复制就能得到,本文之所以还大费周章进行爬取,不过是借用这个简单的静态网页,体验一下爬虫4步骤的流程,为后续批量爬取网页中的小说、图片以及爬取动态网页数据做基础。

4、附录本文代码(完整)

# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup

# 第一步:发出访问请求
url = "https://www.biqiuge.com/book/4772/2940354.html"
response = requests.get(url)

# 第二步:获得网页信息
soup = BeautifulSoup(response.content, 'lxml')

# 第三步:解析网页数据
t1 = soup.find('a', href="/book/4772/").get_text()
t2 = soup.find('h1').get_text()
tt = soup.find('div', id="content", class_="showtxt").text.replace(' ','n').replace('app2();','n')

# 第四步:保存内容
f = open(r"e:小说1.txt", 'a+', encoding='utf-8')
f.write(t1 + 'n')
f.write(t2 + 'n')
f.write(tt)
f.close()
print('下载完成')


Tags:python爬虫   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
利用Python实现中国地铁数据可视化。废话不多说。让我们愉快地开始吧~开发工具Python版本:3.6.4相关模块:requests模块;wordcloud模块;pandas模块;numpy模块;jieba模块;pyecharts模...【详细内容】
2021-12-08  Tags: python爬虫  点击:(34)  评论:(0)  加入收藏
这个开源项目程序可以持续爬取一个或多个新浪微博用户(如李文di、无疫烦)的数据,并将结果信息写入文件或数据库。写入信息几乎包括用户微博的所有数据,包括用户信息和微博信息两大类。...【详细内容】
2021-10-27  Tags: python爬虫  点击:(43)  评论:(0)  加入收藏
回顾python学习历程,感慨良多,这门语言实在是太强了,当然,分支也很多,有的在做安全,有的在做数据,有的在做爬虫,本文就笔者本身的爬虫入门的小经验分享给读者,期待各位在学习python的...【详细内容】
2021-08-11  Tags: python爬虫  点击:(81)  评论:(0)  加入收藏
来源:Python数据之道作者:Peter整理:阳哥大家好,我是阳哥。今天来跟大家分享用 BeautifulSoup 获取信息的一些知识点,文章内容由公众号读者 Peter 创作。欢迎各位童鞋向公众号投...【详细内容】
2021-06-23  Tags: python爬虫  点击:(134)  评论:(0)  加入收藏
前言国内大学最新排名,北大反超,浙大仅第四,中科大跌至第八时隔五年,“双一流”大学即将迎来首次大考,这也是继改变高校评断标准之后,第一次即将以官方对外发布,自然是引来了许多人...【详细内容】
2021-04-08  Tags: python爬虫  点击:(351)  评论:(0)  加入收藏
实施步骤(1) 数据爬取:使用requests请求为基础获取数据源。(2) UA伪装:模拟浏览器访问网址。(3) 数据解析:使用xpath语法处理数据。(4) 数据存储:获取需求数据后使用Excrl进行存...【详细内容】
2021-03-16  Tags: python爬虫  点击:(245)  评论:(0)  加入收藏
在使用Python本爬虫采集数据时,一个很重要的操作就是如何从请求到的网页中提取数据,而正确定位想要的数据又是第一步操作。...【详细内容】
2021-03-04  Tags: python爬虫  点击:(228)  评论:(0)  加入收藏
专注Python、AI、大数据,请关注公众号七步编程!在不同公司的许多人可能出于各种原因需要从Internet收集外部数据:分析竞争,汇总新闻摘要、跟踪特定市场的趋势,或者收集每日股票价...【详细内容】
2020-12-10  Tags: python爬虫  点击:(90)  评论:(0)  加入收藏
我们在写爬虫代码时,常常需要各种分析调试,而且每次直接用代码调试都很麻烦所以今天给大家分享一个工具,不仅能方便模拟发送各种http请求,还能轻松调试,最重要的是,可以将调试最终...【详细内容】
2020-12-07  Tags: python爬虫  点击:(198)  评论:(0)  加入收藏
本篇文章介绍了爬虫中验证码的处理方式, 并把这些功能封装起来,供我们使用, 涉及到百度AIP的调用方式, 以及一个最新的开源库muggle识别库的使用,欢迎阅读,点赞,收藏! 目录: 学会调用...【详细内容】
2020-10-29  Tags: python爬虫  点击:(102)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条