如何用Python按指定规则抓取网站中符合条件的页面?
获取指定格式的网站页面链接
前置依赖
先安装所需的Python库:
pip install beautifulsoup4 requests
实现代码
import requests from bs4 import BeautifulSoup import re # 目标网站基础地址 base_domain = "https://mywebsite.com" # 获取网站首页内容(假设目标链接都在首页展示) resp = requests.get(base_domain) resp.encoding = resp.apparent_encoding # 自动识别编码,避免乱码 # 解析HTML结构 soup = BeautifulSoup(resp.text, "html.parser") # 定义正则规则:匹配以article开头、数字结尾的完整链接 link_pattern = re.compile(rf"^{re.escape(base_domain)}/article\d+$") target_links = [] # 遍历所有带href属性的a标签 for anchor in soup.find_all("a", href=True): raw_link = anchor["href"] # 处理相对链接,转换为完整URL if raw_link.startswith("/article"): full_link = f"{base_domain}{raw_link}" else: full_link = raw_link # 验证链接是否符合规则 if link_pattern.match(full_link): target_links.append(full_link) # 输出筛选后的结果 for link in target_links: print(link)
关键说明
- 正则规则:
rf"^{re.escape(base_domain)}/article\d+$"确保链接以你的域名开头,紧接着是/article,最后是一串数字,^和$保证完全匹配,避免包含其他字符的链接混入。 - 相对链接处理:很多网站的内部链接会用相对路径(比如
/article1),所以需要拼接基础域名转换成完整URL再匹配。 - 扩展性:如果目标链接不在首页,你可以循环遍历网站的其他页面,重复上述解析和匹配逻辑即可。
内容的提问来源于stack exchange,提问作者Rodion Iskhakov
相关产品推荐
相关产品推荐

