Beautiful Soup爬取数据html xml

简介

Beautiful Soup是一个Python库,用于从HTML或XML文件中提取数据。
它提供了一种简单而灵活的方式来解析和遍历HTML或XML文档,并提供了一些有用的方法来提取所需的数据。

安装

pip install beautifulsoup4

使用

  1. 导入库:在Python脚本的开头,导入Beautiful Soup库。
from bs4 import BeautifulSoup
  1. 读取HTML或XML文档:使用适当的方法读取HTML或XML文档,并将其存储在一个变量中。您可以从文件中读取文档,也可以直接将文档内容作为字符串传递给Beautiful Soup。
# 从文件中读取HTML文档
with open('example.html', 'r') as f:html_doc = f.read()

或者直接传递HTML字符串

html_doc = '<html><body><h1>Hello, World!</h1></body></html>'
  1. 创建Beautiful Soup对象:使用Beautiful Soup库创建一个BeautifulSoup对象,将文档内容和解析器类型作为参数传递给它。
soup = BeautifulSoup(html_doc, 'html.parser')
  1. 解析和提取数据:使用Beautiful Soup提供的方法和属性,解析和提取您需要的数据。您可以使用标签名、类名、属性等方式来定位和选择元素。

# 通过标签名选择元素
title = soup.h1
print(title.text)  # 输出元素文本内容# 通过类名选择元素
paragraphs = soup.find_all('p')
for p in paragraphs:print(p.text)# 通过属性选择元素
links = soup.find_all('a', href=<a href="http://example.com" class="underline" target="_blank">Click this URL</a>)
for link in links:print(link['href'])

举例

URL爬数据,弄两万用户左右,然后还需要follower和following的数量
https://www.personalitycafe.com/members/ .html
保存在csv中

  1. 导入所需的库:

import requests
from bs4 import BeautifulSoup
import csv
  1. 发送HTTP请求并创建Beautiful Soup对象:

url = <a href="https://www.personalitycafe.com/members/" class="underline" target="_blank">Click this URL</a>
response = requests.get(url)
html_doc = response.text
soup = BeautifulSoup(html_doc, 'html.parser')
  1. 解析用户列表并提取所需信息:

user_list = soup.find_all('li', class_='member')data = []
for user in user_list:username = user.find('a', class_='username').textfollower_count = user.find('dd', class_='follow_count').textfollowing_count = user.find('dd', class_='following_count').textdata.append([username, follower_count, following_count])
  1. 将数据保存到CSV文件:

filename = 'user_data.csv'with open(filename, 'w', newline='', encoding='utf-8') as file:writer = csv.writer(file)writer.writerow(['Username', 'Follower Count', 'Following Count'])writer.writerows(data)print(f"数据已保存到 {filename} 文件中。")

这样,爬取到的用户数据将会保存在名为 “user_data.csv” 的CSV文件中,包括用户名、follower数量和following数量。

请注意,根据目标网站的结构和HTML标记,可能需要进一步的调整和修改代码以正确提取所需的数据。
要正确提取所需的数据,需要根据目标网站的结构和HTML标记进行进一步的调整和修改代码。

Beautiful Soup

一些常用的Beautiful Soup操作和技巧

  1. 使用标签名称提取元素:
elements = soup.find_all('tag_name')
  1. 使用CSS选择器提取元素:
elements = soup.select('css_selector')
  1. 提取元素的文本内容:
text = element.get_text()
  1. 提取元素的属性值:
attribute_value = element['attribute_name']

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

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

相关文章

数据同步到Redis消息队列,并实现消息发布/订阅

一、假设需求&#xff1a; 某系统在MySQL某表中操作了一条数据在其他系统中&#xff0c;实时获取最新被操作数据的数据库名、数据表名、操作类型、数据内容 应用场景&#xff1a; 按最近项目的一个需求来说&#xff1a; 1.当某子系统向报警表中新增了一条报警数据&#xff1b;…

4.4.2.1 内部类

内部类 成员内部类 定义 调用内部类 访问修饰符的影响 外部类的成员变量及成员方法在内部类的使用 内部类在外部类的使用 静态内部类 静态内部类调用非静态外部类 1

Java使用Redis的几种客户端介绍

Redis是一种高性能的内存数据库&#xff0c;可以提供快速的数据读写操作。在Java中使用Redis&#xff0c;需要使用Redis客户端。目前&#xff0c;Java中常用的Redis客户端有以下几种&#xff1a; Jedis Jedis是Java中最流行的Redis客户端之一&#xff0c;它提供了丰富的API和…

英飞凌Tc275使用记录:Can邮箱号确认与Busoff寄存器设置方法

目录 1、消息后处理 2、消息暂存 3、Tc275 Busoff的寄存器手动处理 1、消息后处理 消息对象成功接收或发送帧后&#xff0c;可以通知CPU对消息对象执行后处理。MultiCAN模块的后处理由两个部分组成: 消息中断触发后处理。消息挂起寄存器将挂起的消息中断收集到一个公共结构中…

centos 6.10 安装 boost 1.78.0

下载地址 找到对应的版本&#xff0c;下载源码&#xff0c;而不是二进制文件。 解压文件 cd boost_1_78_0 ./bootstrap.sh ./b2 install -perfix /usr/local/boost1.78.0/

【LeetCode】2656. K个元素的最大和

2656. K个元素的最大和 难度&#xff1a;简单 题目 给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你需要执行以下操作 恰好 k 次&#xff0c;最大化你的得分&#xff1a; 从 nums 中选择一个元素 m 。将选中的元素 m 从数组中删除。将新元素 m 1 添加到数组中。你…

C#创建并调用dll

文章目录 1.VS2019创建C#主程序2.编译主程序3.添加类库工程&#xff0c;并添加计算逻辑4.给主程序添加引用项5.重新编译主程序6.主程序添加测试逻辑 1.VS2019创建C#主程序 2.编译主程序 debug目录下生成exe&#xff1a; 3.添加类库工程&#xff0c;并添加计算逻辑 添加计算逻…

每日一题(LeetCode)----数组--长度最小的子数组

每日一题(LeetCode)----数组–长度最小的子数组 1.题目&#xff08; 209.长度最小的子数组&#xff09; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &…

国内领先的五大API接口供应商

API&#xff08;Application Programming Interface&#xff09;接口&#xff0c;现在很多应用系统中常用的开放接口&#xff0c;对接相应的系统、软件功能&#xff0c;简化专业化的程序开发。作者用过的国内比较稳定的API接口供应商有如下几家&#xff0c;大家可以参考选择&am…

矢量绘图软件 Sketch mac中文版介绍

Sketch mac是一款为用户提供设计和创建数字界面的矢量编辑工具。它主要用于UI/UX设计师、产品经理和开发人员&#xff0c;帮助他们快速设计和原型各种应用程序和网站。 Sketch具有简洁直观的界面&#xff0c;以及丰富的功能集&#xff0c;使得用户可以轻松地创建、编辑和共享精…

历年国自然标书申请 面上项目614份 2001-2019年 面上标书

这里列举几例 清华任丰原 哈尔滨 杨宝峰 # 关注微信&#xff1a;生信小博士&#xff0c;10元领取 关注微信之后&#xff0c; 点开付费合集即可领取

RabbitMQ-基础篇-黑马程序员

代码&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1nQBIgB_SbzoKu_XMWZ3JoA?pwdaeoe 提取码&#xff1a;aeoe 微服务一旦拆分&#xff0c;必然涉及到服务之间的相互调用&#xff0c;目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中&#xff0c;调…

hash路由模式

hash模式 hash模式是一种把前端路由的路径用井号 # 拼接在浏览器 URL 后面的模式。 一个完整的 URL 包括&#xff1a;协议、域名、端口、虚拟目录、文件名、参数、锚。 https://www.wangyuegyq.top/utils/index.html?name123&phone123#home协议&#xff1a;https域名&am…

Windows 11 配置 ssh server 服务

Windows 11 配置 ssh server 服务 1. 安装 ssh server配置 ssh key 登陆设置默认使用 Powershell设置默认访问路径启动 sshd 和设置开机自动启动安装 vim (Powershell 中可以直接使用) 1. 安装 ssh server 打开 “设置” 》 “应用”&#xff0c;然后打开 “可选配置”&#x…

Django之视图层

目录 一、三板斧的使用 二、JsonReponse序列化类的使用 三、 form表单上传文件 数据准备 数据处理 (1)post请求数据 (2)文件数据获取 四、 FBV与CBV 五、CBV的源码分析 as_view 方法 一、三板斧的使用 HttpResponse 返回字符串类型render 渲染html页面&#xff0c;并…

【ROS】RViz2源码分析(二):main函数及编译配置详解

【ROS】郭老二博文之:ROS目录 1、main函数 #include <memory> #include <string> #include <vector>#include <QApplication>

考虑区域多能源系统集群协同优化的联合需求侧响应模型(matlab代码)

该程序复现《考虑区域多能源系统集群协同优化的联合需求侧响应模型》文献模型&#xff0c;程序的核心是对多个区域级多能源系统互联系统进行多目标优化&#xff0c;并且考虑联合需求侧响应&#xff0c;以多个区域多能源系统运行总成本最小、碳排放最小为目标&#xff0c;建立多…

EventEmitter3在vue中的使用

前提 vue中的组件传递方式有很多&#xff0c;包括父子组件之间的传值&#xff08;props&#xff0c;emit&#xff09;、事件总线&#xff08;$ bus&#xff09;、状态管理模式&#xff08;vuex&#xff0c;pinia&#xff09;&#xff0c;现在推荐一种可以替代$bus的一种传值方…

几种常用的排序

int[] arr new int[]{1, 2,8, 7, 5};这是提前准备好的数组 冒泡排序 public static void bubbleSort(int[] arr) {int len arr.length;for (int i 0; i < len - 1; i) {for (int j 0; j < len - i - 1; j) {if (arr[j] > arr[j1]) {int temp arr[j];arr[j] ar…

openresty安装配置,执行shell脚本

下载并解压 OpenResty 源代码&#xff1a; bashCopy code wget https://openresty.org/download/openresty-1.19.9.1.tar.gz tar -zxvf openresty-1.19.9.1.tar.gz cd openresty-1.19.9.1 运行 ./configure 并指定安装路径&#xff1a; bashCopy code ./configure --prefix…