python爬虫 Beautiful Soup 简单应用

使用 requests 活着 wopen 来获取网页连接内容

import requests
from bs4 import BeautifulSoup

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

可以加入header来进行简单伪装

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4455.2 Safari/537.36'}
response = requests.get(url, headers=headers)

使用 bs4 来获取网页结构

soup=BeautifulSoup(response.text,'lxml')

其中 lxml 为解析器格式

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup, "html.parser")
  • Python的内置标准库
  • 执行速度适中
  • 文档容错能力强
  • Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup, "lxml")
  • 速度快
  • 文档容错能力强
  • 需要安装C语言库
lxml XML 解析器

BeautifulSoup(markup, ["lxml-xml"])

BeautifulSoup(markup, "xml")

  • 速度快
  • 唯一支持XML的解析器
  • 需要安装C语言库
html5lib BeautifulSoup(markup, "html5lib")
  • 最好的容错性
  • 以浏览器的方式解析文档
  • 生成HTML5格式的文档
  • 速度慢
  • 不依赖外部扩展

获取页面元素的查询方法 div 为标签,search-list 为标签的类(class)

soup.find('div', "search-list");
soup.find_all('div');
soup.select('div.search-list')

使用ID进行查询

soup.find('div', id="searchid");
soup.select('#searchid')

需要递级查询的时候 ,查询 id 为 searchid 下面的 类为 search-list 的 div

data = soup.find('', id="searchid");
data.find('div', 'search-list')

soup.select('#searchid > div.search-list')

根据某个属性查询

data = soup.find('', attrs={"data-foo": "search"});

查询到想要的标签之后,获取标签的 文本 和 标签属性href

data.text

data.get('href')

其中 text 会过滤掉 html 标签,同样可以获取内容的还有 data.get_text() 方法

评论已关闭。