编写一个爬虫实现深度优先爬虫
时间: 2024-12-30 22:07:05 浏览: 5
编写一个深度优先(Depth First Search,DFS)的网页爬虫,通常使用递归的方式来进行。以下是Python中使用`requests`和`BeautifulSoup`库实现的一个简单示例:
```python
import requests
from bs4 import BeautifulSoup
def dfs(url, visited=None):
if visited is None:
visited = set()
# 将当前URL添加到已访问集合中
visited.add(url)
# 发送GET请求获取页面内容
try:
response = requests.get(url)
page_content = response.text
except Exception as e:
print(f"Error fetching {url}: {e}")
return
# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(page_content, 'html.parser')
# 找到所有需要抓取的链接(假设它们在<a>标签内有href属性)
links = [link['href'] for link in soup.find_all('a', href=True) if link.get('href') not in visited]
# 对每个未访问过的链接递归地调用dfs函数
for link in links:
dfs(link, visited)
# 起始URL(这里以一个网站为例)
start_url = "https://www.example.com"
dfs(start_url)
```
在这个例子中,`dfs`函数会从起始URL开始,逐层向下探索链接,直到遍历完所有的链接为止。如果遇到循环引用或者无效链接,可以设置相应的处理逻辑。
阅读全文