百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

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

off999 2024-12-14 14:24 30 浏览 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('下载完成')

相关推荐

office2010不激活可以用吗(window10中office不激活可以吗)

可以购买正版授权码激活或激活工具,不激活也可以一直用,但是每一次打开都会弹框。可以使用。因为Office2010不激活后,只会出现一个提醒框,并不影响软件的正常使用。但是未激活的Office2010不...

雨林木风在线重装系统(雨林木风系统安装教程win10)

一,一般雨林木风番茄花园之类的盗版系统重装系统后都是自动激活的,不需要再重新激活。二,如果偶尔系统提示没有激活的话,上系统之家等网站可以下载激活码,按提示激活即可。三,不建议安装雨林木风之类的盗版系统...

系统镜像文件放在哪里(系统镜像文件放在哪里好)

镜像文件路径在安装的U盘内有显示,如果没有显示,那是文件不对,或被解压了。镜像文件是一些压缩文件的统称。常见的有img格式的文件(例如,文本文件的格式是txt),它通常是用特定的软件,将本身自带启动文...

mtu设置多少最好(mtu设置多少最好 4g)

路由器MTU的设置应根据网络情况决定,各种网络环境建议使用的MTU值如下:1.1500—以太网信息包最大值,也是默认值,是没有PPPoE和虚拟专用网络的网络连接的典型设置。是大部分路由器,网络适配器和...

u盘最便宜多少钱一个(u盘最低价格)

一般情况下,一分钱,一分货;没有又便宜,货又好的事情。1、扩容盘。扩容盘是用PC技术,在量产时运用容量优先,输入了固定的容量,但它真实的容量只有标称容量的10倍左右。512M没人要的U盘扩容成4G,它...

小白三步装机教程(小白三步装机法)

下面给大家整理了一份小白装机的详细教程,有需要的朋友们快来看看吧!1、我们下载一个小白软件,然后选择了安装win7系统。2、在下载界面,下载速度取决于您的网络您只需要耐心等待即可。3、软件下载完成后会...

winpe下载官网下载iso(winpe.iso下载)

你好,以winpe装win7iso系统说明安装步骤:  1、根据教程制作好winpe启动盘,然后将下载的win7iso系统文件直接复制到U盘的GHO目录下;  2、在需要装系统的电脑上...

把系统装在u盘(把系统装在u盘里的缺点)

系统装进U盘有效的方法。1、下载并且安装好大白菜装机版,打开安装好的大白菜装机版,插入u盘等待软件成功读取到u盘之后,点击“一键制作启动u盘”进入下一步操作:2、弹出的信息提示窗口中,选择自己下载的的...

恢复出厂设置对电脑有影响吗

电脑恢复出厂设置,对系统没有影响,原因如下:1、系统还原是电脑在使用中的一种正常运作,不还原电脑无法正常运行,系统还原是对电脑的维护,不会对电脑或系统造成损害。2、系统还原是一次大容量的数据读写、清除...

注册邮箱163免费登录入口官网

注册网易邮箱账号步骤如下:1、在浏览器的地址栏输入http://email.163.com/进入网易邮箱的登录页面,点击页面下方的立即注册2、点击立即注册进入邮箱的注册页面,点击页面上面的注册字母邮箱...

产品密钥win10专业版激活密钥免费

1不存在永久激活密钥,但可以使用一些有效期长的密钥去激活Win10专业版。2Windows10的激活方式是基于数字权利,当你购买Windows10时,系统会将您电脑的硬件信息和购买记录绑定在一起...

ghostxp系统下载怎么安装教程

系统之家下载的XP系统通常是一个ISO镜像文件,安装这个系统需要通过一些步骤来制作可启动安装介质并进行系统安装。以下是安装的基本步骤:准备安装介质:使用工具如Rufus或AnyBurn将下载的ISO文...

无线网桥监控安装方法(无线网桥怎么连接监控)

网桥连接无线路由器安装的设置方法如下1.主路由器上网正常,副路由器LAN口插一根网线,另一头连接电脑。主副路由器不需要用网线连接。2.电脑开机输入副路由器背面的设置地址,进入登录界面输入背面的账号密码...

怎么对电脑文件夹加密(怎么对电脑文件夹加密码)

1.右键点要加密的文件或文件夹,然后单击“属性”;2.在“常规”选项卡,点击“高级”。选中“加密内容以便保护数据”复选框;3.在加密文件夹时,系统将询问是否要同时加密它的子文件夹。要如果选择是,那它的...

windows系统下载手机(win10下载手机)

OPPO手机重新下载安装系统:先备份好重要数据!然后手机连接电脑把下载的固件存入手机。然后再长按电源键十秒钟进入关机状态(可拆卸电板的需取下电板然后重新安装)。再同时按住电源键跟音量减键,进入reco...

取消回复欢迎 发表评论: