python爬虫如何获取href

python爬虫如何获取href

作者:Rhett Bai发布时间:2026-01-05阅读时长:0 分钟阅读次数:26

用户关注问题

Q
如何使用Python提取网页中的所有链接地址?

我想用Python爬虫抓取网页上所有的链接,应该怎么做?

Q
如何处理网页中JavaScript动态生成的href链接?

有些页面的href链接是通过JavaScript代码动态生成的,Python爬虫怎样获取这些链接?

A

使用带浏览器渲染功能的工具抓取动态生成链接

普通requests获取的HTML不会包含JavaScript执行后的内容。可以使用Selenium或Playwright模拟浏览器运行JavaScript,等页面加载完成后再提取href。示例使用Selenium:

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('http://example.com')
links = [elem.get_attribute('href') for elem in browser.find_elements(By.TAG_NAME, 'a')]
browser.quit()
print(links)
Q
如何过滤爬取的href链接避免重复或无效链接?

爬取的href链接中有很多重复或无效的,如空链接、锚点,我应该怎么过滤这些?

A

对href链接进行去重和有效性检查的建议

可以先用set去除重复链接,接着过滤掉href为空、以'#'开头或者不完整的链接。假如需要完整URL,使用urljoin将相对路径转换成绝对路径。示例代码:

from urllib.parse import urljoin

base_url = 'http://example.com'
filtered_links = set()
for link in links:
    if link and not link.startswith('#'):
        full_url = urljoin(base_url, link)
        filtered_links.add(full_url)

这样可以得到有效且唯一的链接集合。