使用 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") |
|
|
| lxml HTML 解析器 | BeautifulSoup(markup, "lxml") |
|
|
| lxml XML 解析器 |
|
|
|
| html5lib | BeautifulSoup(markup, "html5lib") |
|
|
获取页面元素的查询方法 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() 方法
评论已关闭。