Python BeautifulSoup数据分析技巧

2023-04-17 00:00:00 数据 分析 技巧
  1. 获取网页内容

使用requests库获取网页内容:

import requests

url = 'https://pidancode.com'
response = requests.get(url)

html = response.content
  1. 解析HTML

使用BeautifulSoup库解析HTML:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

使用CSS选择器获取元素,例如获取所有的链接:

links = soup.select('a')
for link in links:
    print(link.get('href'))
  1. 获取元素属性值

使用get方法获取元素的属性值:

link = soup.select_one('a')
print(link.get('href'))
  1. 获取元素的文本内容

使用text属性获取元素的文本内容:

title = soup.select_one('title')
print(title.text)
  1. 遍历父、子、兄弟元素

使用parent属性获取父元素:

link = soup.select_one('a')
div = link.parent
print(div.name)

使用children属性获取子元素:

div = soup.select_one('div')
for child in div.children:
    if child.name:
        print(child.name)

使用next_sibling、previous_sibling属性获取兄弟元素:

link = soup.select_one('a')
prev_sibling = link.previous_sibling
next_sibling = link.next_sibling
  1. 属性选择器

使用属性选择器获取带有特定属性的元素:

links = soup.select('a[href="https://pidancode.com"]')
for link in links:
    print(link.text)
  1. 使用正则表达式选择元素

使用re模块的search方法结合CSS选择器获取符合正则表达式的元素:

import re

links = soup.select('a[href*="pidancode"]')
for link in links:
    if re.search(r'python', link.text, re.IGNORECASE):
        print(link.text)
  1. 处理JSON数据

使用json库解析JSON数据:

import json

data = '{"name": "皮蛋编程", "age": 25}'
json_data = json.loads(data)
print(json_data['name'])
  1. 处理XML数据

使用xml.etree.ElementTree库解析XML数据:

import xml.etree.ElementTree as ET

xml_data = '''
<person>
    <name>皮蛋编程</name>
    <age>25</age>
</person>
'''

root = ET.fromstring(xml_data)
print(root.find('name').text)
  1. 网页爬虫实例

使用上述技巧实现一个简单的网页爬虫:

import requests
from bs4 import BeautifulSoup

url = 'https://pidancode.com'
response = requests.get(url)

html = response.content
soup = BeautifulSoup(html, 'html.parser')

links = soup.select('a[href]')
for link in links:
    href = link.get('href')
    if href.startswith('http') and 'pidancode' in href:
        print(link.text)

以上就是Python BeautifulSoup数据分析技巧的详细介绍,希望对你有所帮助。

相关文章