Python爬虫:BeautifulSoup

简介: 这篇内容介绍了Python中BeautifulSoup库的安装和使用。首先,通过在命令行输入`pip install bs4`进行安装,或使用清华源加速。接着讲解BeautifulSoup的基本概念,它是一个用于数据解析的工具,便于处理HTML和XML文档。与正则表达式不同,BeautifulSoup提供更方便的方式来查找和操作标签及其属性。文章详细阐述了BeautifulSoup的两个主要方法:`find`和`find_all`。`find`方法用于查找单个指定标签,可结合属性字典进行精确选择;`find_all`则返回所有匹配标签的列表。通过这些方法,可以方便地遍历和提取网页元素。

 安装

打开cmd,键入pip install bs4,下载慢的用清华源

BeautifulSoup

一,概念

bs4数据解析的一种工具,其实和正则表达式差不多的用处,但是bs返回的是网页源代码,我们通过bs4返回的对象可以直接操作标签的标签的各种属性达到加快筛选元素的目的,并且不同于正则表达式,bs4处理过程非常简单(如果你有前端基础的话)。

二,使用

from bs4 import BeautifulSoup
html = """<ul>
    <li><a href="zhubajie.com">猪八戒</a></li>
    <li id="abc"><a href="zhouxingchi.com">周星驰</a></li>
    <li><a href="zhangwuji.com">张无忌</a></li>
    <li><a href="wuzetian.com">武则天</a></li>
  </ul>"""
#1.初始化BeautifulSoup对象
page = BeautifulSoup(html,features="html.parser")
print(page)

image.gif

假设我们有一个html文件,通过bs4解析,我们会得到一个bs4对象,html.parser是指用html的格式解析。

输出结果:

image.gif 编辑

1.find方法

from bs4 import BeautifulSoup
html = """<ul>
    <li><a href="zhubajie.com">猪八戒</a></li>
    <li id="abc"><a href="zhouxingchi.com">周星驰</a></li>
    <li><a href="zhangwuji.com">张无忌</a></li>
    <li><a href="wuzetian.com">武则天</a></li>
  </ul>"""
page = BeautifulSoup(html,features="html.parser")
page.find()#查找某个元素,输入标签名,还可以将属性放入attr字典中
res = page.find("li",attrs={'id':'abc'})#find只找一个,找到就完
print(res)#<li id="abc"><a href="zhouxingchi.com">周星驰</a></li>
a = res.find("a")#可以连续找
print(a)#<a href="zhouxingchi.com">周星驰</a>
print(a.text)#周星驰#获取文本
print(a.get("href"))#zhouxingchi.com#get获取属性

image.gif

image.gif 编辑

概括一下,find就是用来找标签用的,不用加<>,如果标签具有某些属性,比如说id,class什么的,你就可以用attr(字典) 来直接选中,当然find方法是支持连续的,意思就是找到一个父标签,你可以对父标签再用一次find找到它的子标签,以此类推,非常方便。提一嘴,find只能找一个,找多个要findall方法了

2.findall方法

from bs4 import BeautifulSoup
html = """<ul>
    <li><a href="zhubajie.com">猪八戒</a></li>
    <li id="abc"><a href="zhouxingchi.com">周星驰</a></li>
    <li><a href="zhangwuji.com">张无忌</a></li>
    <li><a href="wuzetian.com">武则天</a></li>
  </ul>"""
page = BeautifulSoup(html,features="html.parser")
res_ = page.find_all("li")
print(res_)#[<li><a href="zhubajie.com">猪八戒</a></li>, <li id="abc"><a href="zhouxingchi.com">周星驰</a></li>,
           # <li><a href="zhangwuji.com">张无忌</a></li>, <li><a href="wuzetian.com">武则天</a></li>]
res_ = page.find_all("a")
print(res_)#[<a href="zhubajie.com">猪八戒</a>,
           # <a href="zhouxingchi.com">周星驰</a>, <a href="zhangwuji.com">张无忌</a>, <a href="wuzetian.com">武则天</a>]

image.gif

image.gif 编辑

findall返回的是一个包含所有目标标签的列表,我们可以直接遍历取出来

以上,就是bs4最常用的两个方法了,基本上能用上bs4的情况下这两个方法是够用的。

三,案例

爬取优美图库(可以选其他的网站,步骤是相似的)

from bs4 import BeautifulSoup
import requests
import os
url = "http://www.umeituku.com/bizhitupian/xiaoqingxinbizhi/"
response = requests.get(url)
content = response.content.decode('utf-8')
label = BeautifulSoup(content,features='html.parser')
div = label.find("div",attrs={'class':'TypeList'})
imgs = div.find_all("img")
srcs = []
for img in imgs:
    src = img.get("src")
    srcs.append(src)
print(srcs)
#下载
os.mkdir('images')
n = 1
for src in srcs:
    img_response = requests.get(src)
    path = './images/'+str(n)+'.jpg'
    with open(path, mode='wb') as f:
        f.write(img_response.content)
    n+=1

image.gif

image.gif 编辑


目录
相关文章
|
10天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
12天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
19天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
60 6
|
13天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
18天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
37 7
|
20天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
43 6
|
17天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
17天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
107 1
|
20天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
46 4