源码:爬取类名为target_classname的a标签地址并另存为到urls.txt文件中
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin # 用于处理相对URL
def scrape_links(url):
page = 1
while True:
# 构造目标页面的 URL,假设分页参数是 page
page_url = f"{url}?page={page}"
print(f"正在爬取第 {page} 页: {page_url}")
# 发送 HTTP 请求获取页面内容
response = requests.get(page_url)
# 如果请求成功
if response.status_code == 200:
# 解析 HTML 内容
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有 class 为 arget_classname 的 a 标签
links = soup.find_all('a', class_='target_classname')
if not links: # 如果当前页没有链接,说明已经是最后一页
break
# 打开文件进行写入
with open('urls.txt', 'a') as file: # 使用 'a' 模式,避免覆盖
for link in links:
href = link.get('href')
if href:
# 将相对URL转换为绝对URL
full_url = urljoin(url, href) # 拼接前缀
file.write(full_url + '\n')
print(f"第 {page} 页的链接已保存")
# 增加页码,爬取下一页
page += 1
else:
print(f"请求失败,状态码: {response.status_code}")
break
if __name__ == "__main__":
target_url = input("请输入目标网址: ")
scrape_links(target_url)
input("按任意键退出...")