Python BeautifulSoup Web数据挖掘技巧
- 查找标签
使用BeautifulSoup的find()或find_all()方法可以查找标签。其中find()只返回第一个匹配的标签,而find_all()返回所有匹配的标签。
举个例子,要查找pidancode.com页面上所有的a标签,可以这样写代码:
from bs4 import BeautifulSoup import requests url = 'https://pidancode.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') a_tags = soup.find_all('a')
- 获取属性值
获取一个标签的属性值,可以使用tag[attr]的方式。其中tag是标签对象,attr是属性名。
举个例子,获取pidancode.com页面上第一个a标签的href属性值,可以这样写代码:
from bs4 import BeautifulSoup import requests url = 'https://pidancode.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') a_tags = soup.find_all('a') first_a_tag = a_tags[0] href = first_a_tag['href']
- 查找子孙标签
有时候需要查找一个标签的子孙标签,可以使用tag.find_all()方法。
举个例子,要查找pidancode.com页面上class为post-title的h2标签,可以这样写代码:
from bs4 import BeautifulSoup import requests url = 'https://pidancode.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') post_title_tags = soup.find_all('h2', class_='post-title')
- 查找父标签
有时候需要查找一个标签的父标签,可以使用tag.parent属性。
举个例子,要查找pidancode.com页面上class为entry-summary的div标签的父标签,可以这样写代码:
from bs4 import BeautifulSoup import requests url = 'https://pidancode.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') entry_summary_tags = soup.find_all('div', class_='entry-summary') for entry_summary_tag in entry_summary_tags: parent_tag = entry_summary_tag.parent print(parent_tag)
- 过滤标签
可以使用filter()函数过滤标签。filter()函数接受一个函数作为参数,然后将文档中的每一个标签传给该函数,函数返回True的标签将被保留,否则将被删除。
举个例子,过滤pidancode.com页面上class为post-title的h2标签,可以这样写代码:
from bs4 import BeautifulSoup import requests url = 'https://pidancode.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') def has_post_title_class(tag): return tag.name == 'h2' and tag.has_attr('class') and 'post-title' in tag['class'] filtered_tags = filter(has_post_title_class, soup.find_all())
- 正则表达式匹配
如果需要对文档进行复杂的正则表达式匹配,则可以使用re模块配合BeautifulSoup使用。
举个例子,在pidancode.com页面上查找所有以数字开头的链接,可以这样写代码:
from bs4 import BeautifulSoup import requests import re url = 'https://pidancode.com/' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') a_tags = soup.find_all('a', href=re.compile(r'^\d+.*$'))
以上就是Python BeautifulSoup Web数据挖掘技巧的详细介绍,希望对您有所帮助。
相关文章