第一个小练习,我们要把这网站左侧的各种书籍的分类给提取出来 来,开始。第一步,最便捷的方式,右键点击第一个分类“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() 是将文本部分的特殊字符切除,同学们在练习的时候,可以把这个去掉和加上,看看两者的区别是什么; |
|
来自: 云卷云舒3a6k9l > 《Python笔记》