如何用Python和BeautifulSoup统计谷歌搜索结果中词汇出现次数
谷歌搜索结果短语统计代码解析与优化
Hey,我来拆解下这段代码的核心功能,顺便给你提几个能让它更稳定运行的小建议~
代码核心功能
这段代码的作用很明确:针对指定的查询词q发起谷歌搜索请求,解析搜索结果页面后,统计三个目标短语a1、a2、a3分别在搜索结果标题中出现的次数,最后输出每个短语的统计结果。
修正后的格式化代码
原代码存在几个语法小问题(比如未初始化计数器、Python3的print语法),我帮你整理成可直接运行的版本:
import requests from bs4 import BeautifulSoup # 先初始化计数器,避免运行报错 c1 = 0 c2 = 0 c3 = 0 base = "http://www.google.com" url = f"http://www.google.com/search?q={q}" # 用f-string拼接更简洁 response = requests.get(url) soup = BeautifulSoup(response.text, "lxml") for item in soup.select(".r a"): title_text = item.text if a1 in title_text: c1 += 1 if a2 in title_text: c2 += 1 if a3 in title_text: c3 += 1 # 用f-string让输出格式更清晰 print(f"{a1}: {c1}") print(f"{a2}: {c2}") print(f"{a3}: {c3}")
几个关键注意事项
- 必须初始化计数器:原代码里
c1、c2、c3没有提前赋值,直接运行会触发NameError,一定要先设为0。 - 谷歌反爬的坑:直接用
requests.get访问谷歌搜索大概率会被拦截(返回验证码或403错误),建议给请求加个浏览器的User-Agent头模拟正常访问,比如:
长期使用的话,更推荐用谷歌官方的自定义搜索API,合规又稳定。headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"} response = requests.get(url, headers=headers) - 页面选择器可能失效:谷歌的页面结构经常更新,
.r a这个选择器说不定哪天就没用了,到时候得重新检查页面元素调整选择器。 - 大小写敏感问题:当前判断是区分大小写的,如果需要忽略大小写,可以改成
if a1.lower() in title_text.lower()。
内容的提问来源于stack exchange,提问作者Arshak Anjum
相关产品推荐
相关产品推荐

