Python关键词搜索与手动关键词搜索结果差异很大

我刚接触python,目前正在学习爬虫制作。
我遇到了一个问题,请帮忙看看给予帮助。
使用手动搜索关键词“口腔医院”,结果如下:

img

而使用webdriver.Chrome()搜索关键词“口腔医院”,结果如下:

img

请帮忙看一下可能与什么相关,谢谢。

  • 这篇博客也许可以解决你的问题👉 :Python使用Selenium控制Chrome浏览器(web自动化)
  • 除此之外, 这篇博客: Python分布式爬虫打造搜索引擎中的 设置chromedriver不加载图片 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • chrome_opt = webdriver.ChromeOptions()
    prefs = {"profile.managed_default_content_settings.images":2}
    chrome_opt.add_experimental_option("prefs", prefs)

    browser = webdriver.Chrome(executable_path=“C:/chromedriver.exe”,chrome_options=chrome_opt)
    browser.get(“https://www.oschina.net/blog”)

  • 以下回答由chatgpt基于相关博客总结生成:

    对于问题描述中提到的搜索结果的差异,可能与以下几个方面有关:

    1. User-Agent:手动搜索和使用webdriver获取搜索结果时,可能使用的是不同的User-Agent,因此返回的结果也会有所不同。可以尝试在webdriver中设置User-Agent与手动搜索保持一致。
    2. 网络环境:手动搜索和使用webdriver获取搜索结果时,可能处于不同的网络环境下,因此返回的结果也会有所不同。可以尝试在webdriver中设置代理或者模拟不同网络环境,看看是否能够解决问题。
    3. 页面渲染:手动搜索和使用webdriver获取搜索结果时,可能使用的是不同的渲染方法或者渲染引擎,因此返回的结果也会有所不同。可以尝试在webdriver中设置不加载图片、禁用javascript等方式来控制页面渲染,看看是否能得到与手动搜索相同的结果。

    对于具体的解决方案,可以考虑如下步骤:

    1. 设置webdriver的User-Agent,可以参考以下代码修改。其中,headers中的"User-Agent"可以根据手动搜索时所使用浏览器的User-Agent进行修改。
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36')
    driver = webdriver.Chrome(chrome_options=options)
    
    1. 设置代理或者模拟不同的网络环境,可以参考以下代码修改。其中,proxy可以替换为自己的代理地址和端口号,network_conditions中的latency和download_throughput可以根据网络环境进行修改。
    from selenium import webdriver
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--proxy-server=http://myproxy:1234')
    driver = webdriver.Chrome(options=chrome_options)
    driver.set_network_conditions(
      offline=False,
      latency=5,  # additional latency (ms)
      download_throughput=500 * 1024,  # maximal throughput
      upload_throughput=500 * 1024)  # maximal throughput
    
    1. 设置不加载图片、禁用javascript等方式来控制页面渲染,可以参考以下代码修改。
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("--disable-infobars")
    prefs = {"profile.managed_default_content_settings.images":2, 'plugins.plugins_disabled': ['Chrome PDF Viewer']}
    options.add_experimental_option("prefs",prefs)
    options.add_argument("--disable-javascript")
    driver = webdriver.Chrome(chrome_options=options)
    driver.get("https://www.google.com")
    

    如果以上方案均不能解决问题,可以考虑对手动搜索和使用webdriver获取搜索结果时所请求的URL、请求头、请求参数等进行抓包分析,查看返回的结果是否有明显的差异。如果还不能确定问题所在,可以将分析结果提供出来,以便在进一步调查和解决问题。

上图是繁体字

上面手动搜索的大部分都是广告 手动搜索
你用代码去搜索 会干净很多没有浏览器历史和cookie,所以搜索结果会更加“干净

关键是我爬的目的就是抓这些广告链接
如何才能与手动结果保持一致呢?