python爬虫入门(四)之Beautiful Soup库

一、什么是Beautiful Soup库

1、Beautiful Soup库是用来做HTML解析的库

Beautiful Soup把看起来复杂的HTML内容,解析成树状结构,让搜索和修改HTML结构变得更容易

2、第三方库,先安装

终端输入pip install bs4

from bs4 import BeautifulSoup(引入)

3、beautifulsoup和bs4是什么关系

二、储备知识:

from bs4 import BeautifulSoupimport requestsheader={"User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"}#注意是字典类型
content=requests.get("http://books.toscrape.com/",headers=header).text#注意是headers,注意网址别写错,可以直接复制粘贴#把content传入BeautifulSoup的构造函数里soup=BeautifulSoup(content,"html.parser") #第二个参数指定解析器,即可以解析什么类型的内容#print(soup.p) #都是打印第一个出现的元素
#print(soup.img)#浏览器的检查功能
#运用某种方法,找出所有class属性值为“price_color”的p标签all_prices=soup.findAll("p",attrs={"class":"price_color"})#注意是findAll
#findAll能根据标签、属性等找出所有符合要求的元素,attrs是可选参数(字典类型)
#findAll返回可迭代对象,可以用for循环遍历各个对象
for price in all_prices:print(price)#如果不想打印乱七八糟的HTML标签信息,可以选择打印对象的string属性(把标签包围的文字返回给我们)
for price in all_prices:print(price.string[2:])
#如果只想要纯净的数字,不要前面的货币符号,用一些字符串操作方法也可以实现,比如切片操作
#切片操作: 获得索引值大于等于2的所有剩下字符串#找书名: 共性->所有书名都是h3元素的子元素->找所有h3元素下的a元素
#1、找到所有h3元素
all_titles=soup.findAll("h3")
#2、找到每个h3元素下的所有a元素
for title in all_titles:all_links=soup.findAll("a")
#3、提取a元素里的文字for link in all_links:print(link.string)#由于h3里只有一个a元素,可以直接找第一个
for title in all_titles:link=title.find("a")print(link.string)

三、小试牛刀:

import requests
from bs4 import BeautifulSouphead={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"}
#一页只有25部电影,每一页的链接不一样
for start_num in range(0,250,25): #0,25,50...225response=requests.get(f"https://movie.douban.com/top250?start={start_num}",headers=head)content=response.textsoup=BeautifulSoup(content,"html.parser")all_titles=soup.findAll("span",attrs={"class":"title"})for title in all_titles:# 原版标题前面有一个斜杠,用if判断title_string=title.stringif "/" not in title_string:print(title_string)

注意:

1、在 requests.get 的 URL 中,start=start_num 是一个字符串而不是变量。应该使用字符串格式化方法将 start_num 的值插入 URL 中

2、遇到过的一个bug(因为head写成了字符串,漏了“User-Agent”,应该写字典形式才对):

  • 错误信息AttributeError: 'str' object has no attribute 'items'

    这行错误信息告诉我们代码试图调用 .items() 方法(返回字典的键值对),而这个方法在字符串对象上是不可用的。由此可以推断,传递给 requests.getheaders 参数是一个字符串而不是字典。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux服务管理(一)SSH服务

Linux服务管理-SSH服务 1、SSH的登录验证2、SSH的登录端口设置3、SSH的登录用户设置4、SSH的登录超时设置5、SSH的尝试登录次数设置6、ssh尝试次数超了,服务器端怎么放行 程序优化是有上限的,比如一个网站的代码量你只会随着需求越写越多不会越写越少。架…

想买开放式耳机怎么选?五款高热度产品甄选推荐!

在追求自由与舒适的今天,开放式蓝牙耳机以其独特魅力,正引领音频设备的新风尚。它们摒弃了传统入耳式的封闭束缚,让音乐与周围世界和谐共存,既保证了音质的清晰与沉浸,又保留了对环境的敏锐感知。开放式设计不仅减轻了…

16jQuery基本语法

【一】jQuery基本语法 jQuery(选择器).action() 简写 jQuery(选择器) ----> $(选择器) (1)js与jquery对比 <script>// 原生jslet p1Ele document.getElementById("p1");let p2Ele document.getElementById("p2"); ​p1Ele.style.color red…

Maven Dependencies missing jar 解决

信息摘要来自:https://blog.csdn.net/weixin_33769207/article/details/93681274 项目右键maven->update project。 如果还有 missing 的jar&#xff0c;再项目右键maven->update project&#xff0c;但是这次勾选 Force Update ...那一行&#xff0c;再OK。 如果此时依然…

【2024最新】Arduino通过Python进行串口通信控制电机

1. 背景 最近想研究一下用 Python 控制 Arduino 的技术&#xff0c;通过上网查询&#xff0c;发现可以用 Python 中的 serial 库来实现和 Arduino 主板的串口通信&#xff0c;从而控制 Arduino。 特此记录一下这个小项目的过程及出现的问题。 2. 基础准备 主板&#xff1a;…

selenium常用方法

打开浏览器定位元素的方法操作元素的方法操作浏览器的方法操作选择框的方法操作鼠标的方法 打开浏览器 from selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Edge()url "..." driver.get(url) driver.maximize_window()…

景联文科技打造高质量图文推理问答数据集,赋能大语言模型提升推理能力

大语言模型在处理推理任务时&#xff0c;不同于人类能够反思错误并修正思维路径&#xff0c;当它遇到自身知识盲区时&#xff0c;缺乏自我校正机制&#xff0c;往往导致输出结果不仅无法改善&#xff0c;反而可能变得更不准确。 需要依赖外部的知识库和推理能力来克服其在理解和…

【MySQL】2.库的操作

库的操作 一.创建数据库1.数据库的编码集 二.查看数据库三.修改数据库四.删除数据库五.数据库的备份和恢复 一.创建数据库 create database [if not exists] db_name [charsetutf8] [collateutf8_general_ci] //创建一个名为db_name的数据库&#xff0c;本质就是在/var/lib/my…

视觉图像面积计算

在图像处理和计算机视觉中&#xff0c;计算对象面积的常见方法有两种&#xff1a;使用四邻域标记算法和使用轮廓计算。每种方法在不同情况下有各自的优缺点。 四邻域标记算法&#xff1a; 优点&#xff1a; 简单易实现。能够处理带有孔洞的复杂区域&#xff08;只要孔洞不影响连…

WebKit性能优化秘籍:打造极速网页体验

WebKit性能优化秘籍&#xff1a;打造极速网页体验 在现代Web开发中&#xff0c;WebKit作为核心渲染引擎&#xff0c;其性能直接影响到网页的加载速度和运行效率。优化WebKit性能&#xff0c;不仅可以提升用户体验&#xff0c;还能增强应用的竞争力。本文将深入探讨如何优化Web…

Amazon Kinesis常用权限分类详解

Amazon Kinesis是一套用于实时收集、处理和分析数据流的平台化服务。为了确保Kinesis资源的安全性和访问控制,AWS提供了一套细粒度的权限管理机制。本文将详细介绍Kinesis的常用权限分类,并提供相应的JSON策略示例。 1. Kinesis Data Streams权限 Kinesis Data Streams是Ki…

蚓链实践告诉你“企业确保达成数字化营销效果的方法”

在如今这个数字化盛行的时代&#xff0c;企业想在激烈的市场竞争里崭露头角&#xff0c;确保数字营销效果那可是至关重要&#xff01;今天就来给大家聊聊实现这一目标的基本条件&#xff0c;来自蚓链数字化营销系统的广大用户体验总结。 一、精准的目标定位 企业一定要清楚地知…

uniapp 表格,动态表头表格封装渲染

1.接口表格数据&#xff1a; {"headers": [{"label": "实例名","name": "v1","order": 1,"hide": false,"dateTypeValue": null},{"label": "所属科室","name&quo…

CentOS 安装 annie/lux,以及 annie/lux 的使用

annie 介绍 如果第一次听到 annie 想必都会觉得陌生&#xff0c;annie 被大家称为视频下载神器&#xff0c;annie 作者介绍说可以下载抖音、哔哩哔哩、优酷、爱奇艺、芒果TV、YouTube、Tumblr、Vimeo 等平台的视频。 githup&#xff1a;https://github.com/pingf/annie 支持…

使用Boost.Asio编写TCP通信程序框架(一)

基于Boost.Asio库编写TCP通信程序框架&#xff1a; 我们首先需要明确几个关键点&#xff1a;节点间如何建立连接、消息如何传输、以及如何处理网络事件。以下是一个简化的设计方案&#xff1a; 1. 设计目标 可扩展性&#xff1a;系统应该能够轻松地添加或移除节点。容错性&…

51单片机嵌入式开发:1、STC89C52环境配置到点亮LED

STC89C52环境配置到点亮LED 1 环境配置1.1 硬件环境1.2 编译环境1.3 烧录环境 2 工程配置2.1 工程框架2.2 工程创建2.3 参数配置 3 点亮一个LED3.1 原理图解读3.2 代码配置3.3 演示 4 总结 1 环境配置 1.1 硬件环境 硬件环境采用“华晴电子”的MINIEL-89C开发板&#xff0c;这…

服务发现与注册:Eureka与Consul

在微服务架构中&#xff0c;服务发现与注册是一个非常重要的部分。通过服务发现机制&#xff0c;微服务能够相互找到并进行通信&#xff0c;而不需要了解彼此的具体地址。本文将详细介绍两种主流的服务发现与注册框架&#xff1a;Eureka和Consul&#xff0c;并提供相应的代码示…

elasticSearch快速了解

elasticSearch&#xff1a;经常用于搜索引擎&#xff0c;我们用的百度搜索和github上的搜索都是用的搜索引擎&#xff0c;它是对输入内容进行分析&#xff0c;然后查询&#xff0c;不像数据库模糊搜索的like一样必须含用你输入的全部内容。 elasticSearch优势&#xff1a;支持…

一文解决:你与该网站的连接不是私密连接,存在安全隐患

访问网页时&#xff0c;是不是会经常遇到网站不是私密连接的提示&#xff1f;当浏览器提示某个网页不安全时&#xff0c;这通常是因为网页使用的是非加密的HTTP协议&#xff0c;或者其HTTPS协议的SSL/TLS证书存在问题。 通常遇到这类网站时要注意&#xff0c;一来是网站未与证书…

`THREE.Line` 是 Three.js 中用于创建线段的类。

demo案例 THREE.Line 是 Three.js 中用于创建线段的类。以下是 THREE.Line 的详细说明&#xff0c;包括构造函数参数、输出、方法和属性。 构造函数 new THREE.Line(geometry, material, mode) geometry (THREE.BufferGeometry 或 THREE.Geometry): 定义线段的几何体。mater…