Python爬虫:BeautifulSoup

安装

打开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)

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

 输出结果:

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获取属性

 

概括一下,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>]

 

 

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

 

 

 

 

 

 

 

相关推荐

  1. Python爬虫---解析---BeautifulSoup

    2024-04-30 19:30:03       58 阅读
  2. 爬虫PythonBeautifulSoup

    2024-04-30 19:30:03       33 阅读
  3. Python爬虫BeautifulSoup模块

    2024-04-30 19:30:03       36 阅读
  4. Python爬虫利器:BeautifulSoup库详解

    2024-04-30 19:30:03       66 阅读
  5. python爬虫(11)之BeautifulSoup模块

    2024-04-30 19:30:03       40 阅读
  6. python网络爬虫学习——BeautifulSoup

    2024-04-30 19:30:03       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 19:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 19:30:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 19:30:03       82 阅读
  4. Python语言-面向对象

    2024-04-30 19:30:03       91 阅读

热门阅读

  1. k8s持久化存储之OpenEBS

    2024-04-30 19:30:03       24 阅读
  2. 富格林:可信方略杜绝交易虚假

    2024-04-30 19:30:03       30 阅读
  3. HTTP 与 HTTPS

    2024-04-30 19:30:03       31 阅读
  4. 政府采购合作创新采购方式管理暂行办法

    2024-04-30 19:30:03       27 阅读
  5. Kerckhoffs原则详细介绍

    2024-04-30 19:30:03       33 阅读
  6. 使用大模型做网络热点挖掘思路

    2024-04-30 19:30:03       27 阅读