Beautiful Soup无法提取目标网站全部锚点元素问题求助
解决Coventry.gov.uk A-Z页面链接提取问题
你的问题出在两个核心点:
- 目标页面里的业务链接都是相对路径(以
/开头),但你的代码只筛选https开头的链接,直接漏掉了大部分目标内容 - 页面中存在多个
<ul>元素,遍历所有<ul>会抓取到无关的导航、侧边栏链接,而非A-Z条目对应的列表
修正后的代码
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin # 目标页面URL base_url = "https://www.coventry.gov.uk/a-to-z/A" response = requests.get(base_url) soup = BeautifulSoup(response.content, "html.parser") # 定位到存放A-Z条目的特定列表(查看页面源码可知该列表类为az-links) target_list = soup.find("ul", class_="az-links") if target_list: links = target_list.find_all("a") for link in links: href = link.get("href") if href: # 将相对路径拼接为完整URL full_url = urljoin(base_url, href) print(full_url)
关键改动说明
- 使用
urllib.parse.urljoin将相对路径转为完整URL,避免丢失站内链接 - 通过
class_="az-links"定位到正确的目标列表,只抓取A-Z相关条目 - 放宽链接判断条件,不再只筛选
https开头的链接,确保相对路径被捕获
内容的提问来源于stack exchange,提问作者Gs can't
相关产品推荐
相关产品推荐

