内容正文:
中物理
第三单元 我的课外读物
——网络爬虫
川教版(2019) 信息技术(九年级上册)
第2节 处理网络信息
学易同步精品课堂
1
课堂导入
同学们:
上一节中,我们在Python中用requests模块获取到了“京东商城”的网页信息,接下来,根据需要对数据进行处理和保存。让我们按前面分析的步骤一步一步地来实现吧。
学习目标
1
1. 学会使用BeautifulSoup模块,对获取到的信息进行清理。
2.了解Html标签在使用BeautifulSoup模块时的作用。
3.学会字符串合并、替换等简单操作。
4.掌握在Python中使用open函数保存文件,了解常用编码方式UTF-8与GBK。
2
目录
一、提取书籍的名称
二、同时提取书名和好评数
三、保存信息
四、我的课外读物
提取书籍的名称
一
一、提取书籍的名称
提取书籍的名称
一
使用BeautifulSoup模块,可以很简单地将我们需要的内容从网页中提取出来。
解析“天猫图书”页面源代码(resTxt即网页源代码变量)的代码如下:
resStr=BeautifulSoup(resTxt,’lxml’)
这里,用BeautifulSoup模块调用lxml解析器处理网页源代码resTxt,分析出源代码中的标签、数据等,并将处理后的结果赋值给变量resStr。
下面,使用BeautifulSoup模块,提取网页中书籍的名称。用class="title"作为关键字,通过select函数来取得所有书籍的名称列表sm的代码如下:
sm=resStr.select(‘[class="title"]‘)
sm是所有书籍名称列表,按在网页中出现的先后顺序依次编号为0,1,2,3,4……
也可以将提取到的书籍名称直接打印,代码如下:
print(resStr.select(‘class=”title”]’)
提取书籍的名称
一
我们只需要对上一节中的代码稍做修改,即可达到目的,代码如下:
#1引入相应的模块
import requests
from bs4 import BeautifulSoup
#2访问网址获取数据
res=requests.get('https://book.tmall.com/?spm=a21bo.jianhua.201867-main.29.5af911d9HKWXk5')
res.encoding='UTF-8'
resTxt=res.text
resStr=BeautifulSoup(resTxt,"lxml")
#用BeautifulSoup模块调用lxml解析器处理resTxt文本,
#赋值给变量resStr
print(resStr.select('[class="title"]'))
#打印所有书名,使用class="title"来取得书籍的名称
提取书籍的名称
一
保存上面代码,运行,结果如下图所示:
提取书籍的名称
一
上图,使用BeautifulSoup模块清除掉了除书籍名称之外的所有内容,得到一个列表,列表中第0项内容是:<span class=“litle”>三国演义</span>,……,以此类推。每一项目中都有不需要的span标签,再将上面代码完善一下,用for循环提取出列表中的每一项内容,并只打印其中的书籍名称,代码如下:
#①引入相应的库
import requests
from bs4 import BeautifulSoup
#②访问网址获取数据
res=requests.get('https://book.tmall.com/?spm=a21bo.jianhua.201867-main.29.5af911d9HKWXk5')
res.encoding='UTF-8'
resTxt=res.text
resStr=BeautifulSoup(resTxt,'lxml')
sm=resStr.select('[class="title"]')
#我们将所有获取到的书籍名称列表,赋值给变量sm
for fr in sm:
#在列表变量sm中循环,准备读取出每本书籍的名称
print(fr.string)
#在屏幕上显示出每本书籍的名称
提取书籍的名称
一
运行结果如下图所示:
提取书籍的名称
一
使用BeautifulSoup模块从网页中获取到需要的信息,关键在于从Html中找到所需信息的“标签”,通过标签的值,就可以将需要的信息提取出来。
拓展:
获取好评数、价格等信息与获取书籍名称的方法相同,只是关键词不同。同学们可试试修改一下上面的代码,来提取书籍的好评数、内容简介和价格。
提取书籍好评数的代码如下:
#1引入相应的库
import requests
from bs4 import Beaut