使用 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() 方法
评论已关闭。