1.基本过程
- 发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。常见的请求方法有两种,GET和POST。
- 获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
- 解析内容:得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
- 保存数据:如果数据不多,可保存在txt 文本、csv文本或者json文本等。如果爬取的数据条数较多,可以考虑将其存储到数据库中。也可以保存为特定格式的文件。
2.Beautiful Soup
BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它提供了简单、Pythonic的方法来解析树形结构,并从中抓取数据。
#安装方法
pips install beautifulsoup4
#验证方法
from bs4 import BeautifulSoup
常用命令:
# 解析HTML/XML:
soup = BeautifulSoup(html_doc, 'html.parser')
# 查找标签:
# # 查找第一个<p>标签
tag = soup.find('p')
# 使用`find_all()`查找所有匹配的标签
tags = soup.find_all('p')
# 使用`attrs`参数查找具有特定属性的标签
# # 查找id为link1的<a>标签
tag = soup.find('a', attrs={'id': 'link1'})
# 获取标签内容
text = tag.string # 或 tag.get_text()
# 获取标签属性:
# 使用`['属性名']`或`.get('属性名')`获取标签的属性值
href = tag['href'] # 或 tag.get('href')
# 嵌套选择:
# 选择<head>标签内的<title>标签的文本内容
title = soup.head.title.string
# 使用CSS选择器:
# 选择class为class_name的<p>标签
tags = soup.select('p.class_name')
3.实际应用
3.1 获取一个url下所有的链接
import requests
from bs4 import BeautifulSoup
def get_allurl(url):
result_link = []
html_content = requests.get(url).text
soup = BeautifulSoup(html_content, "html.parser")
# 找到其中的a标签,筛选出其中以.html结尾的url
link_nodes = soup.find_all('a', href=lambda href: href and href.endswith('.html'))
for node in link_nodes:
tem_url=node.get("href")
result_link.append(tem_url)
print(tem_url)
return result_link
if __name__=="__main__":
url='https://consumer.panasonic.cn/product/cooking-appliances/rice-cookers/'
# 使用函数获取选项列表
get_allurl(url)