安装所需库
首先,确保你已经安装了 requests 和 beautifulsoup4 库:
![]()
示例:抓取网页标题
假设我们想抓取某个网页的所有标题(例如,<h1>, <h2>, <h3> 等标签中的文本)。以下是一个简单的爬虫示例:
import requests
from bs4 import BeautifulSoup
def fetch_titles(url):
try:
# 发送请求获取网页内容
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
print(f"成功获取网页:{url}")
else:
print(f"请求失败,状态码:{response.status_code}")
return
# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 抓取所有的标题标签(h1, h2, h3等)
titles = soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])
if titles:
print("页面中的标题:")
for idx, title in enumerate(titles, 1):
print(f"{idx}. {title.get_text(strip=True)}")
else:
print("未找到任何标题标签。")
except requests.exceptions.RequestException as e:
print(f"网络请求错误:{e}")
except Exception as e:
print(f"发生了一个错误:{e}")
# 使用示例
url = 'https://example.com' # 请替换为你要抓取的目标网站
fetch_titles(url)
说明:
requests.get(url):向指定的 URL 发送 GET 请求,获取网页的 HTML 内容。BeautifulSoup(response.text, 'html.parser'):使用 BeautifulSoup 库解析网页 HTML。soup.find_all([...]):查找所有匹配的 HTML 标签,在这个示例中我们抓取了标题标签<h1>到<h6>。title.get_text(strip=True):提取每个标题标签中的文本,并去除多余的空格。
示例:抓取网页中的所有链接
如果你想抓取网页中的所有链接(<a> 标签中的 href 属性),可以使用以下代码:
def fetch_links(url):
try:
# 发送请求获取网页内容
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
print(f"成功获取网页:{url}")
else:
print(f"请求失败,状态码:{response.status_code}")
return
# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 抓取所有的 <a> 标签
links = soup.find_all('a')
if links:
print("页面中的所有链接:")
for idx, link in enumerate(links, 1):
href = link.get('href')
if href:
print(f"{idx}. {href}")
else:
print("未找到任何链接。")
except requests.exceptions.RequestException as e:
print(f"网络请求错误:{e}")
except Exception as e:
print(f"发生了一个错误:{e}")
# 使用示例
url = 'https://example.com' # 请替换为你要抓取的目标网站
fetch_links(url)
说明:
soup.find_all('a'):抓取页面中所有的<a>标签,即网页中的所有超链接。link.get('href'):提取每个<a>标签的href属性,即链接的 URL。
扩展功能:保存抓取的数据
如果你希望将抓取的数据保存到文件(例如 CSV 或文本文件),你可以将抓取的内容写入文件。
将链接保存到 CSV 文件:
import csv
def save_links_to_csv(url):
try:
# 发送请求获取网页内容
response = requests.get(url)
# 检查请求是否成功
if response.status_code == 200:
print(f"成功获取网页:{url}")
else:
print(f"请求失败,状态码:{response.status_code}")
return
# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 抓取所有的 <a> 标签
links = soup.find_all('a')
# 如果找到链接,则保存到 CSV 文件
if links:
with open('links.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["Link"]) # 写入表头
for link in links:
href = link.get('href')
if href:
writer.writerow([href])
print("所有链接已保存到 links.csv 文件。")
else:
print("未找到任何链接。")
except requests.exceptions.RequestException as e:
print(f"网络请求错误:{e}")
except Exception as e:
print(f"发生了一个错误:{e}")
# 使用示例
url = 'https://example.com' # 请替换为你要抓取的目标网站
save_links_to_csv(url)
总结
以上是一个简单的 Python 爬虫示例。你可以根据需求进行扩展和修改,比如处理分页抓取、数据清洗、模拟用户行为等。爬虫的核心是发送 HTTP 请求并解析响应数据,常用的工具是 requests 和 BeautifulSoup,也可以使用更高级的工具如 Selenium(用于动态页面抓取)。
20万+

被折叠的 条评论
为什么被折叠?



