我想爬取所有网页里的文章链接,但总是重复爬取首页,这是为什么
你是不是标签没有弄好,F12看下网页里的文章链接是哪个标签
【以下回答由 GPT 生成】
首先,为了避免重复爬取首页的内容,你可以在每次爬取首页内容后,将已经爬取的链接保存起来。然后,在每次循环遍历页面时,判断当前链接是否已经在已爬取链接列表中,如果在列表中,则跳过该链接,继续下一个链接的爬取。
以下是具体的解决方案:
import requests
from bs4 import BeautifulSoup
crawled_links = []
def crawl_page(url):
# 发送请求获取页面内容
response = requests.get(url)
content = response.text
# 使用BeautifulSoup解析页面
soup = BeautifulSoup(content, 'html.parser')
# 解析页面中的链接
links = soup.find_all('a')
# 遍历链接
for link in links:
href = link.get('href')
# 检查链接是否已经爬取
if href not in crawled_links:
# 进行爬取处理,如获取链接标题等
# ...
# 将链接添加到已爬取列表中
crawled_links.append(href)
# 递归调用函数继续爬取链接
crawl_page(href)
start_url = 'https://example.com' # 开始爬取的首页链接
crawl_page(start_url)
上述代码中,我们通过crawl_page函数递归地爬取链接和解析页面。同时,对于每个已经爬取的链接,我们将其添加到crawled_links列表中,这样在每次循环遍历页面时,我们可以根据已爬取列表来判断是否需要再次爬取该链接。
希望这个解决方案对你有帮助!如果你有任何问题,请随时提问。
【相关推荐】