前言:

        前两天OpenAI正式发布第五代模型,引起了广泛关注。正好前几天写了份百度搜索数据抓取的代码,我就想正好可以爬一下百度搜索上有关它的一些谈论,同时把代码分享给各位的小伙伴们!

        话不多说,直接开干!

一:数据展示

数据的字段是页码,标题,链接还有对应的简介。数据很直观清晰,便于后续进行数据分析,也很方便大家进行直观的分析。

二:代码解析

一:浏览器初始化模块

def init_browser():
    chrome_options = Options()
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--start-maximized")
    chrome_options.add_argument("user-agent=Mozilla/5.0...")
    
    service = Service(r"C:\Program Files\Google\Chrome\Application\chromedriver.exe")
    driver = webdriver.Chrome(options=chrome_options, service=service)
    return driver

该模块配置Chrome浏览器驱动参数:

  • 禁用GPU加速提升稳定性
  • 设置浏览器启动时最大化窗口
  • 添加用户代理伪装成普通浏览器
  • 指定chromedriver路径并返回浏览器实例

二:URL关键词提取模块

def extract_keyword_from_url(url):
    pattern = r'wd=([^&]+)'
    match = re.search(pattern, url)
    if match:
        keyword = match.group(1).replace('+', ' ')
        return keyword
    return "未知关键词"

功能实现逻辑:

  • 使用正则表达式匹配URL中的wd=参数
  • 解码URL编码的空格字符
  • 返回提取后的关键词或默认值

三:Excel导出模块

def export_results_to_excel(results, file_name=None):
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    file_name = file_name or f"百度搜索结果_{timestamp}.xlsx"
    
    df = pd.DataFrame(results)
    os.makedirs('search_results', exist_ok=True)
    file_path = os.path.join('search_results', file_name)
    df.to_excel(file_path, index=False)

数据处理特点:

  • 自动生成时间戳文件名
  • 创建search_results目录确保路径存在
  • 使用pandas转换数据为Excel格式
  • 返回文件绝对路径便于后续操作

四:页面爬取核心模块

search_results = driver.find_elements(By.CSS_SELECTOR, '.result.c-container, .result-op.c-container')
if not search_results:
    search_results = driver.find_elements(By.CSS_SELECTOR, '[mu], .t')

for result in search_results:
    title_elem = result.find_element(By.CSS_SELECTOR, 'h3 a, h3.t a')
    abstract_elems = result.find_elements(By.CSS_SELECTOR, '.c-abstract, .content-right_8Zs40')

元素定位策略:

  • 主选择器定位标准结果容器
  • 备用选择器应对页面结构变化
  • 异常处理确保单条失败不影响整体采集

五:数据存储

results.append({
    "页码": page,
    "标题": title,
    "链接": link,
    "简介": abstract
})
 

每处理完一个搜索结果,就会将信息以字典形式添加到结果列表。

六:分页处理逻辑

next_button = driver.find_element(By.LINK_TEXT, "下一页 >")
if next_button.is_displayed():
    driver.execute_script("arguments[0].scrollIntoView();", next_button)
    driver.execute_script("arguments[0].click();", next_button)
 

尝试定位并点击"下一页"按钮,使用JavaScript执行点击确保可靠性。

三:使用流程

运行代码后直接可以输入你想要爬取的链接。

这里可以设置能爬取的页数,这里指定爬取10页。

接下来会打开浏览器窗口,自动获取数据,自动翻页。这里使用的谷歌浏览器。

这是运行过程中的图。

四:结语

        以上就是全部内容啦,如果你感兴趣的话欢迎关注我,我还会写更多对大家有帮助的代码,帮助大家学习python爬虫,欢迎大家交流学习。若要获取完整的代码,为方便大家,请在公重微号找 python副业星球,关键词回复在评论区领取。下期再见!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐