Published on

常用beautifulsoup4操作

Authors
  • avatar
    Name
    yushenw
    Linkedin

beautifulsoup4是一个轻量级的python库,能够解析html代码,以下是基本使用方法

基本使用

import requests
from bs4 import BeautifulSoup

url = 'https://a'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}

response = requests.get(url, headers)
# file.write(soup.prettify())
with open('origin.html', 'w', encoding='utf-8') as file:
    file.write(response.text)

# 解析HTML
soup = BeautifulSoup(response.content, 'html.parser')

s = soup.find('span', class_='DS-EntryPoint1-1')
divs = soup.find_all('div', class_='DS-EntryPoint1-1')
# 遍历找到的div元素
for div in divs:
    # 在每个div中查找所有的span元素
    spans = div.find_all('span')
    if len(spans) >= 2: 
        second_span_content = spans[1].get_text()
        print(second_span_content)

常用API

  • find() 作用:查找与指定条件匹配的第一个元素。 用法示例:soup.find('tag_name'), soup.find('tag_name', class_='class_name')

  • find_all() 作用:查找与指定条件匹配的所有元素。 用法示例:soup.find_all('tag_name'), soup.find_all('tag_name', class_='class_name')

  • select() 作用:使用CSS选择器查找元素。 用法示例:soup.select('tag_name'), soup.select('.class_name'), soup.select('#id_name')

  • select_one() 作用:使用CSS选择器查找第一个匹配的元素。 用法示例:soup.select_one('.class_name'), soup.select_one('#id_name')

  • find_parent() / find_parents() 作用:查找元素的父元素(find_parent)或所有父元素(find_parents)。 用法示例:element.find_parent('tag_name'), element.find_parents('tag_name')

  • find_next_sibling() / find_next_siblings() 作用:查找元素的下一个兄弟元素(find_next_sibling)或所有后续兄弟元素(find_next_siblings)。 用法示例:element.find_next_sibling('tag_name'), element.find_next_siblings('tag_name')

  • find_previous_sibling() / find_previous_siblings() 作用:查找元素的上一个兄弟元素(find_previous_sibling)或所有之前的兄弟元素(find_previous_siblings)。 用法示例:element.find_previous_sibling('tag_name'), element.find_previous_siblings('tag_name')

  • find_all_next() / find_next() 作用:查找元素之后的所有符合条件的元素(find_all_next)或下一个符合条件的元素(find_next)。 用法示例:element.find_all_next('tag_name'), element.find_next('tag_name')

  • find_all_previous() / find_previous() 作用:查找元素之前的所有符合条件的元素(find_all_previous)或上一个符合条件的元素(find_previous)。 用法示例:element.find_all_previous('tag_name'), element.find_previous('tag_name')