该代码无法使用的可能原因是 requests、bs4 和 openpyxl 这三个库没有安装或者没有正确导入。另外,如果网络连接不稳定,也可能会导致 requests.get() 方法无法获取到网页内容。

可以尝试重新安装这三个库,并检查网络连接是否正常。

安装库:

pip install requests beautifulsoup4 openpyxl

检查网络连接:

  • 尝试访问其他网站,检查网络是否正常连接。
  • 确认代理服务器设置是否正确。

代码优化:

  • 可以使用 try-except 语句来捕获异常,并进行错误处理。
  • 可以添加一些日志记录,方便排查问题。

示例代码:

import requests
from bs4 import BeautifulSoup
import openpyxl


def get_related_keywords(keyword):
    url = 'https://www.baidu.com/s'
    params = {
        'wd': keyword,
        'rn': '10',
        'tn': 'baidurt',
        'ie': 'utf-8',
        'rqlang': 'cn',
        'rsv_dl': 'tb',
        'rsv_srlang': 'cn',
        'rsv_rq': 'off'
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    try:
        res = requests.get(url, params=params, headers=headers)
        res.raise_for_status()  # 检查请求是否成功
        soup = BeautifulSoup(res.text, 'html.parser')
        related_keywords = []
        for related in soup.select('.tip'):
            related_keywords.append(related.text.strip())
        return related_keywords
    except requests.exceptions.RequestException as e:
        print(f'请求失败: {e}')
        return []


def get_dropdown_keywords(keyword):
    url = 'https://www.baidu.com/sugrec'
    params = {
        'prod': 'pc',
        'wd': keyword,
        'cb': 'window.baidu.sug'
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    try:
        res = requests.get(url, params=params, headers=headers)
        res.raise_for_status()
        soup = BeautifulSoup(res.text, 'html.parser')
        dropdown_keywords = []
        for dropdown in soup.select('.suglist li'):
            dropdown_keywords.append(dropdown.text.strip())
        return dropdown_keywords
    except requests.exceptions.RequestException as e:
        print(f'请求失败: {e}')
        return []


def save_to_excel(data):
    wb = openpyxl.Workbook()
    ws = wb.active
    ws.append(['Keyword', 'Related Keywords', 'Dropdown Keywords'])
    for row in data:
        ws.append(row)
    wb.save('keywords.xlsx')


if __name__ == '__main__':
    keywords = ['Python', '数据分析', '机器学习']
    data = []
    for keyword in keywords:
        related_keywords = get_related_keywords(keyword)
        dropdown_keywords = get_dropdown_keywords(keyword)
        row = [keyword, ', '.join(related_keywords), ', '.join(dropdown_keywords)]
        data.append(row)
    save_to_excel(data)
Python 代码无法获取百度搜索相关词和下拉词:原因分析及解决方法

原文地址: https://www.cveoy.top/t/topic/mA9U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录