📜  如何在 python 中读取网站(1)

📅  最后修改于: 2023-12-03 14:52:31.157000             🧑  作者: Mango

如何在 Python 中读取网站

Python 是一种广泛应用的编程语言,能够读取互联网上的信息是其一个重要的应用场景之一。本篇文章将介绍如何在 Python 中读取网站,并提供相应代码示例。

Requests 库

requests 是 Python 中用于发送 HTTP 请求的第三方库。它允许轻松访问网站的 HTML 内容、Cookies、Headers 等。

安装 Requests 库

使用 pip 命令可以轻松地安装 requests 库。

pip install requests
获取网页内容

使用 requests.get() 方法能够获取相应页面的 HTML 内容。

import requests

url = "https://example.com"
response = requests.get(url)
print(response.text)  # 打印 HTML 内容
发送参数

除了发送基础请求外,还可以将参数添加在 URL 中,这通常在使用 API 时应用生效。

import requests

url = "https://example.com"
payload = {"key1": "value1", "key2": "value2"}  # 发送的参数
response = requests.get(url, params=payload)
print(response.url)  # 打印出完整 URL
添加 Headers

有些网站检测流量来源,通过检查请求 Header 中的信息。如果没有这些信息,它们可能会阻止请求,或者显示与正常情况不同的内容。

import requests

url = "https://example.com"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}
response = requests.get(url, headers=headers)
print(response.text)  # 打印 HTML 内容
处理 Cookies

当网站需要登录时,常常使用 Cookies 来跟踪用户的登录状态。使用 requests 库,能够轻松地提供这些信息,以便能够继续登录会话。

import requests

url = "https://example.com/login"
payload = {"username": "apy", "password": "123456"}  # 发送的参数
response = requests.post(url, data=payload)
cookies = response.cookies  # 获取 cookies
print(response.text)   # 打印 HTML 内容
Beautiful Soup 库

Beautiful Soup 库是一个用于解析 HTML 和 XML 文档的 Python 库。它使得即便在文件结构混乱的情况下,一次性搜索文档更加容易。

安装 Beautiful Soup 库

使用 pip 命令可以轻松地安装 Beautiful Soup 库。

pip install beautifulsoup4
解析 HTML 内容

使用 beautifulsoup4 库能够轻松地解析 HTML 内容。

from bs4 import BeautifulSoup
import requests

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

print(soup.prettify())  # 打印格式化之后的 HTML 内容
查找标签

使用 beautifulsoup4 库能够轻松地搜索并提取 HTML 标签。

from bs4 import BeautifulSoup
import requests

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 打印出所有的标签
for tag in soup.find_all(True):
    print(tag.name)
配合 re 包使用

beautifulsoup4 库提供了一种优雅的方式来搜索文档中具有某些匹配属性的标签,但当需要更复杂的搜索时,还需要使用到 Python 内置的 re 包。

from bs4 import BeautifulSoup
import requests
import re

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 查找 class 以 "avant" 打头的所有 div 标签
for tag in soup.find_all("div", class_=re.compile("^avant")):
    print(tag)
总结

在 Python 中读取网站有很多方法,这里介绍了读取网页内容和解析 HTML 内容的方法。使用 requests 库能够轻松地发送基础请求,并发送参数和 Headers。而使用 Beautiful Soup 库能够轻松地解析出和筛选 HTML 标签。合理使用这些库,将有助于轻松快捷地获取所需信息。