Python BeautifulSoup数据分析技巧
- 获取网页内容
使用requests库获取网页内容:
import requests url = 'https://pidancode.com' response = requests.get(url) html = response.content
- 解析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'))
- 获取元素属性值
使用get方法获取元素的属性值:
link = soup.select_one('a') print(link.get('href'))
- 获取元素的文本内容
使用text属性获取元素的文本内容:
title = soup.select_one('title') print(title.text)
- 遍历父、子、兄弟元素
使用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
- 属性选择器
使用属性选择器获取带有特定属性的元素:
links = soup.select('a[href="https://pidancode.com"]') for link in links: print(link.text)
- 使用正则表达式选择元素
使用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)
- 处理JSON数据
使用json库解析JSON数据:
import json data = '{"name": "皮蛋编程", "age": 25}' json_data = json.loads(data) print(json_data['name'])
- 处理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)
- 网页爬虫实例
使用上述技巧实现一个简单的网页爬虫:
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数据分析技巧的详细介绍,希望对你有所帮助。
相关文章