4.19python

一、今日学习内容

 通过 requests 库已经可以抓到网页源码,接下来要从源码中找到并提取数据。Beautiful Soup 是 python 的一个库,其最主要的功能是从网页中抓取数据。Beautiful Soup 目前已经被移植到 bs4 库中,也就是说在导入 Beautiful Soup 时需要先安装 bs4 库和lxml库。库的安装已经很熟悉了pip install就可以了

安装 Python 第三方库后,输入下面的代码,即可开启 Beautiful Soup 之旅:

  1. import requests #导入requests包
  2. from bs4 import BeautifulSoup
  3. url='http://www.cntour.cn/'
  4. strhtml=requests.get(url)
  5. soup=BeautifulSoup(strhtml.text,'lxml')
  6. data = soup.select('#main>div>div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li>a')
  7. print(data)

代码运行结果如图 17 所示。

 

 



图 17(点此查看高清大图


Beautiful Soup 库能够轻松解析网页信息,它被集成在 bs4 库中,需要时可以从 bs4 库中调用。其表达语句如下:

from bs4 import BeautifulSoup

首先,HTML 文档将被转换成 Unicode 编码格式,然后 Beautiful Soup 选择最合适的解析器来解析这段文档,此处指定 lxml 解析器进行解析。解析后便将复杂的 HTML 文档转换成树形结构,并且每个节点都是 Python 对象。这里将解析后的文档存储到新建的变量 soup 中,代码如下:

soup=BeautifulSoup(strhtml.text,'lxml')

接下来用 select(选择器)定位数据,定位数据时需要使用浏览器的开发者模式,将鼠标光标停留在对应的数据位置并右击,然后在快捷菜单中选择“检查”命令,如图 18 所示:

 

 



图 18


随后在浏览器右侧会弹出开发者界面,右侧高亮的代码(参见图  19(b))对应着左侧高亮的数据文本(参见图 19(a))。右击右侧高亮数据,在弹出的快捷菜单中选择“Copy”➔“Copy Selector”命令,便可以自动复制路径。

 

 



图 19 复制路径

将路径粘贴在文档中,代码如下:

#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li:nth-child(1) > a

由于这条路径是选中的第一条的路径,而我们需要获取所有的头条新闻,因此将 li:nth-child(1)中冒号(包含冒号)后面的部分删掉,代码如下:

#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a

使用 soup.select 引用这个路径,代码如下:

data = soup.select('#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a')

二、遇到的问题

 暂无

三、明日计划

继续python学习

posted @ 2021-04-19 21:45  居酿圆子  阅读(32)  评论(0编辑  收藏  举报