js抓取网页内容(Python基础知识:元素而不仅仅是标题元素是什么)
优采云 发布时间: 2022-03-03 16:19js抓取网页内容(Python基础知识:元素而不仅仅是标题元素是什么)
元素,而不仅仅是标题元素。
使用每个 Beautiful Soup 对象附带的 .parent 属性,您可以直观地逐步浏览 DOM 结构并使用您需要的元素。您还可以以类似的方式访问子元素和兄弟元素。阅读导航树以获取更多信息。
从 HTML 元素中提取属性
此时,您的 Python 脚本已抓取该站点并过滤其 HTML 以查找相关职位发布。做得好!但是,申请工作的链接仍然缺失。
检查页面时,您在每张卡片的底部发现了两个链接。如果您处理链接元素的方式与处理其他元素的方式相同,您将不会获得您感兴趣的 URL:
for job_element in python_job_elements:
# -- snip --
links = job_element.find_all("a")
for link in links:
print(link.text.strip())
如果您运行此代码片段,那么您将获得链接文本 Learn、Apply 而不是关联的 URL。
这是因为 .text 属性只留下 HTML 元素的可见内容。它去除所有 HTML 标记,包括收录 URL 的 HTML 属性,只留下链接文本。要改为获取 URL,您需要提取 HTML 属性之一的值,而不是丢弃它。
链接元素的 URL 与 href 属性相关联。您要查找的特定 URL 是单个职位发布的 HTML 底部的第二个 href 标记的属性值:
首先获取工作卡中的所有元素。href 然后,使用方括号表示法提取它们的属性值:
for job_element in python_job_elements:
# -- snip --
links = job_element.find_all("a")
for link in links:
link_url = link["href"]
print(f"Apply here: {link_url}\n")
在此代码段中,您首先从每个过滤的职位发布中获取所有链接。然后提取收录 URL 的 href 属性,使用 ["href"] 并将其打印到控制台。
在下面的练习块中,您可以找到挑战说明,以优化您收到的链接结果:
练习:优化结果显示/隐藏
每张工作卡都有两个与之关联的链接。您正在寻找的只是第二个链接。如何编辑上面显示的代码片段,以便始终只采集第二个链接的 URL?
单击解决方案块以阅读此练习的可能解决方案:
解决方案:优化您的结果显示/隐藏
要获取每个工作卡的第二个链接的 URL,您可以使用以下代码段:
for job_element in python_job_elements:
link_url = job_element.find_all("a")[1]["href"]
print(f"Apply here: {link_url}\n")
您正在通过索引 ( ) 从结果中选择第二个链接元素。然后,您将使用方括号表示法直接提取 URL 并对属性 ( ) 进行寻址。.find_all()[1]href["href"]
您还可以使用相同的方括号表示法来提取其他 HTML 属性。
保持练习
如果您在本教程旁边编写了代码,那么您可以按原样运行您的脚本,您会看到终端中弹出虚假的作业消息。您的下一步是处理现实生活中的工作委员会!要继续练习您的新技能,请使用以下任何或所有 网站 重新访问网络抓取过程:
链接的 网站 将其搜索结果作为静态 HTML 响应返回,类似于 Fake Python 工作板。所以你可以用美丽的汤把它们刮掉。
使用这些其他站点之一从顶部重新开始阅读本教程。您会看到每个 网站 的结构都不同,您需要以稍微不同的方式重构代码以获得所需的数据。接受这个挑战是练习刚刚学到的概念的好方法。虽然它可能会让你大汗淋漓,但你的编码技能会因此而变得更强!
在您第二次尝试时,您还可以探索 Beautiful Soup 的其他功能。使用文档作为您的指南和灵感。额外的练习将帮助您更熟练地使用 Python、.requests 和 Beautiful Soup 进行网络抓取。
为了结束您的网络抓取之旅,您可以对您的代码进行最后的改造,并创建一个命令行界面 (CLI) 应用程序,该应用程序可以抓取其中一个工作板,并允许您在每次执行时键入按关键字过滤结果。您的 CLI 工具可让您搜索特定类型或位置的工作。
如果您有兴趣了解如何使脚本适应命令行界面,请查看如何使用 argparse 在 Python 中构建命令行界面。
综上所述
requests 库为您提供了一种使用 Python 从 Internet 获取静态 HTML 的用户友好方式。然后,您可以使用另一个名为 Beautiful Soup 的包来解析 HTML。这两个软件包都是您的网络抓取冒险值得信赖且有用的伴侣。您会发现 Beautiful Soup 将满足您的大部分解析需求,包括导航和高级搜索。
在本教程中,您学习了如何使用 Python 请求和 Beautiful Soup 从 Web 抓取数据。您构建了一个脚本,该脚本从 Internet 获取招聘信息,并从头到尾执行完整的网络抓取过程。
你已经学会了如何:
考虑到这个广泛的管道和工具包中的两个强大的库,您可以出去看看您还能获取哪些其他 网站。玩得开心,并始终记住尊重和负责任地使用您的编程技能。
您可以通过单击下面的链接下载您在本教程中构建的示例脚本的源代码: