当前位置:嗨网首页>书籍在线阅读

23-第2步_找到所有的结果

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

第2步:找到所有的结果

现在你需要使用 Beautiful Soup 从下载的HTML中提取排名靠前的查询结果链接。但如何知道完成这项工作需要怎样的选择器呢?例如,你不能只查找所有的 <a> 标签,因为在这个HTML中,有许多链接你是不关心的,所以必须用浏览器的开发者工具来检查这个查询结果页面,尝试寻找一个选择器,它将挑选出你想要的链接。

在针对Beautiful Soup进行查询后,你可以打开浏览器的开发者工具,查看该页面上的一些链接元素。它们看起来很复杂,大概像这样: <a class="package-snippet" href="HYPERLINK "view-source:https://**/project/xml-parser/"/project/xml-parser/">。

该元素看起来复杂得难以置信,但这没有关系,只需要找到查询结果链接都具有的模式即可。

确保你的代码看起来像这样:

#! python3
# searchpypi.py - Opens several google results.
import requests, sys, webbrowser, bs4
--snip--
# Retrieve top search result links.
soup = bs4.BeautifulSoup(res.text, 'html.parser')
# Open a browser tab for each result.
linkElems = soup.select('.package-snippet')

但是,如果查看 <a> 元素,你就会发现结果链接都有 class="package-snippet" 。查看余下的HTML源代码,看起来 package-snippet 类仅用于查询结果链接。你不需要知道CSS类 package-snippet 是什么,或者它会做什么。只需要利用它作为一个标记,查找你需要的 <a> 元素。可以通过下载页面的HTML文本创建一个 BeautifulSoup 对象,然后用选择器 '.package-snippet' 找到所有具有CSS类 package-snippet 的元素中的 <a> 元素。请注意,如果PyPI网站改变了布局,那么你可能需要更新这个程序,方法是将一个新的CSS选择器字符串传递给 soup.select() 。程序的其余部分仍将适用。