如何用Python Requests获取包含全部搜索词的谷歌搜索结果
如何修改谷歌搜索代码以仅返回包含全部关键词的结果?
要实现只返回包含所有指定关键词的搜索结果,你需要在提取链接前,先检查每个结果的标题、摘要等内容是否包含全部关键词。以下是修改后的代码及关键逻辑说明:
修改思路
- 拆分搜索字符串为独立的关键词列表,统一转为小写以便不区分大小写检查
- 定位谷歌搜索结果的完整条目容器(而非单独的a标签),提取每个条目的标题、摘要文本及目标链接
- 检查当前条目的文本内容是否包含所有关键词,仅保留符合条件的结果
修改后的代码
import requests from bs4 import BeautifulSoup search = 'colette+johnson+beatrix+smith+textbook' results = 10 url = f"https://www.google.com/search?q={search}&num={results}" # 拆分并统一关键词为小写 keywords = [kw.lower() for kw in search.split('+')] requests_results = requests.get(url) soup = BeautifulSoup(requests_results.content, "html.parser") # 定位每个搜索结果的容器(谷歌搜索结果通常用class="g"的div包裹) search_items = soup.find_all("div", class_="g") for item in search_items: # 提取结果的标题和摘要文本 title = item.find("h3").get_text(strip=True) if item.find("h3") else "" snippet = item.find("div", class_="VwiC3b").get_text(strip=True) if item.find("div", class_="VwiC3b") else "" full_content = f"{title} {snippet}".lower() # 检查是否包含所有关键词 if all(kw in full_content for kw in keywords): # 提取目标链接 link_tag = item.find("a") if link_tag and "url?q=" in link_tag.get('href', '') and not "webcache" in link_tag.get('href', ''): link_href = link_tag.get('href').split("?q=")[1].split("&sa=U")[0] print(link_href)
关键说明
- 关键词检查:通过
all(kw in full_content for kw in keywords)判断当前结果是否包含所有关键词,full_content整合了标题和摘要,确保覆盖结果的核心展示内容 - 结果容器定位:直接使用
class="g"的div作为搜索结果条目,避免提取到页面其他无关链接(如谷歌导航、广告链接等) - 不区分大小写:将关键词和内容都转为小写,避免因大小写差异漏判符合条件的结果
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

