最简单的python爬虫案例,适合入门学习
off999 2024-12-14 14:24 33 浏览 0 评论
用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、爬取网络小说
如图3-1,我们试着把这篇小说爬下来保存为txt文件,按照爬虫4部曲,我们逐步来看:
1)、发出请求
用代码向网络发出请求,请求访问某个网址,首先我们得在代码中给出具体的网址信息,比如上面截图的网址是:https://www.biqiuge.com/book/4772/2940354.html
那这个网址是怎么得到的呢,常规方法是通过浏览器的开发者工具,我是用的360浏览器,点击右上角的工具菜单,点击开发者工具即可,打开后的界面如下图3-2:
顶部菜单选择Network,中间圆圈选择Preview,通过选择左侧红色方框内的不同选项,观察Preview下部的内容,当能看到我们想要的文字时人(如图3-3),就说明找到了。
这时点击Preview左侧的Header面板,得到下图3-4中的url就是我们要找的网址。复制后,粘贴到代码里就能发出请求了。
有细心的会看到,这个网址和我们平常浏览网页时地址栏里的网址一样啊,还用这么麻烦?
这两个网址确实是一样的,是不用这么麻烦,直接从地址栏复制就可以。但很多时候,我们要爬取的网页数据并不在浏览器地址栏的那个网址里,这个时候就需要通过上面的那个开发者工具方法去找。
有了网址,发出请求的代码为:
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的结果:
内容与前面在Preview里看到的一样,说明已经成功获得了网页内容。
3)、解析网页内容,获得数据
所有要爬取的数据,都在上面的soup结果里,但还有更多是我们不需要的数据。所以接下来第3步就是对上面的结果内容进行操作,以获得我们想要的内容。
1)根据目标,我们首先要获得小说的标题和章节标题
在开发者工具里,分析网页内容,发现我们的目标之一小说和章节的标题分别位于下图所示位置:
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()。
为了达到更好的效果,我们将代码:
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()和空格符都替换为换行符。运行后得到效果为:
至此,一个简单的爬取就完成了。
其实,该网址内容完全可以直接复制就能得到,本文之所以还大费周章进行爬取,不过是借用这个简单的静态网页,体验一下爬虫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('下载完成')相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
