如何使用Python循环执行多次Google搜索并抓取首个返回结果
from requests_html import HTMLSession s = HTMLSession() companies = ['ABC', 'ACME', 'XYZ'] profile_links = [] # 请求头统一抽出来复用 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'} for company in companies: # 遍历每个公司动态生成搜索url search_url = f'https://www.google.com/search?q=%28%22jobtitle1%22+OR+%22jobtitle2%22+OR+%22jobtitle3%22+OR+%22jobtitle4%22%29+AND+%22{company}%22+AND+%28Location1+OR+Location2+OR+Location3%29' r = s.get(search_url, headers=headers) # 查找所有含linkedin的a标签,不直接取索引避免报错 linkedin_links = r.html.find('a', containing='linkedin') if linkedin_links: # 取首个符合要求的结果,提取href属性 first_link = linkedin_links[0].attrs.get('href', '') if first_link: profile_links.append(first_link) # 所有查询完成后统一打印结果 print("收集到的链接:", profile_links)
主要改动点
- 遍历逻辑调整:把遍历对象从字符串search改成了companies列表,每次循环传入单个公司名称拼接搜索url,实现批量查询
- 异常兼容:查找含linkedin的链接时先获取全部匹配结果,判断存在才取第一个,避免没有匹配结果时直接取索引
[0]抛出报错 - 逻辑修正:调整了append的操作方向,是把获取到的链接追加到结果列表
profile_links中,同时提取a标签的href属性作为有效链接存入 - 拼写修正:修复了原搜索条件中
Loction3的拼写错误为Location3 - 输出逻辑调整:把打印操作移到循环外,全部查询完成后统一输出最终结果,避免重复打印中间内容
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

