分享

第2关

 云卷云舒3a6k9l 2020-05-01

http://books./

第一个小练习,我们要把这网站左侧的各种书籍的分类给提取出来

来,开始。第一步,最便捷的方式,右键点击第一个分类“Travel”,然后选择“检查”

检查会被打开,并且自动定位到element里面的标签位置

简单看一下右边的标签情况,很多<li>标签中,打开的是第一个<li>标签

<li>标签下又是一个<a>标签,那我们把这个<a>标签展开看一看

嗯,没错。Travel这个分类的文本内容就在这个标签下。接着我们继续多看一下几个<li>标签,会发现,每个<li>标签下都是一个分类的文本

那大概的思路是不是有啦?

同学可能会这么想:定位到<li>标签,爬它!

等等等等,别着急

真的以为定位到<li>标签就好了?

再检查一下吧,用ctrl+F搜索一下<li>标签

结果如下

搜出来的第一个<li>标签,不是我们需要的内容。这说明,如果直接定位到<li>标签是不准确的

所以我们还是一步步来定位,不用要求一步到位哦

这里需要提取好几层呢,耐心一点,精准一点

最后,我们可以把程序写出这个样子

自动检测
import requests
from bs4 import BeautifulSoup


res_bookstore = requests.get('http://books./')
bs_bookstore = BeautifulSoup(res_bookstore.text,'html.parser')
list_kind = bs_bookstore.find('ul',class_='nav').find('ul').find_all('li') # 这里需要提取好几层


for tag_kind in list_kind:
    tag_name = tag_kind.find('a')
    print(tag_name.text.strip()) # 去除特殊字符串,比如空格,\n,\t等等

这里有三处需要注意:

1、第7行,这里是把所有的标签定位连写,同学们在自己练习的时候,可以分开一步步来写;

2、第7行,最后用的find_all(‘li’)是把所有<li>标签爬取下来,得到的是一个列表;

3、第12行,tag_name.text是提取出<a>标签的文本部分,.strip() 是将文本部分的特殊字符切除,同学们在练习的时候,可以把这个去掉和加上,看看两者的区别是什么;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多