BS4谷歌Dork爬虫if语句逻辑错误:误输出垃圾链接求助
Google Dork爬虫逻辑修复方案
问题核心
原脚本因多个独立if语句的逻辑顺序错误,导致无结果带垃圾推荐的场景下,会同时输出错误提示和垃圾链接,需调整判断优先级,确保同一场景仅触发对应分支。
修复逻辑
- 优先判定无结果带垃圾推荐:通过
.rQUFld、#topstuff或.Uj3I6c.lsMMHb任一标识识别 - 其次判定完全无结果:通过
div.eqAnXb#res标识识别 - 最后处理正常有效结果:提取
a:has(h3)指向的有效链接
修复后代码
import requests import bs4 url = "https://www.google.com/search" params = {"q": 'here_is_some_google_dork'} headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"} response = requests.get(url, params=params, headers=headers) soup = bs4.BeautifulSoup(response.content, "html.parser") # 无结果但带垃圾推荐的情况 if soup.select_one('.rQUFld, #topstuff, .Uj3I6c.lsMMHb'): print("无结果(含垃圾推荐)") # 完全无结果的情况 elif soup.select_one('div.eqAnXb#res'): print("无结果(无任何链接)") # 存在有效链接的情况 elif soup.select("a:has(h3)"): print("找到有效链接:") for a in soup.select("a:has(h3)"): print(a["href"]) # 兜底处理(应对页面结构变更) else: print("未识别到结果类型,请检查页面结构")
代码说明
- 用
select_one替代select提升判断效率,仅需确认元素是否存在 - 采用
elif链式判断,保证同一时间仅触发一个逻辑分支 - 整合所有提供的页面标识,提升场景判定的准确性
- 增加兜底分支,避免因Google页面结构变更导致的逻辑失效
内容的提问来源于stack exchange,提问作者JohnLocke
相关产品推荐
相关产品推荐

