详解用Python进行谷歌Search分析

  • Post category:Python

Python进行谷歌Search分析-完整攻略

在Python中,我们可以使用Googlesearch-python这个库,来获取谷歌搜索结果。使用Googlesearch-python库可以快速、方便的进行谷歌搜索、分析。

安装Googlesearch-python库

使用pip命令进行安装:

pip install googlesearch-python

搜索谷歌

使用Googlesearch-python库的search()函数可以快速搜索谷歌,并返回搜索结果。

from googlesearch import search

query = "Python谷歌搜索" # 搜索的关键字
for j in search(query, num=10):
    print(j)

以上代码会在控制台中输出10条搜索结果。

search()函数的参数num控制返回的搜索结果数。默认返回10条搜索结果。如果需要返回更多搜索结果,可以通过设置num参数进行调整。

谷歌搜索结果分析

使用 requests 和 BeautifulSoup 库可以对谷歌搜索结果进行进一步的分析和处理。

import requests
from bs4 import BeautifulSoup

search_result = requests.get('https://www.google.com/search?q=Python谷歌搜索', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(search_result.text, 'html.parser')
result_div = soup.find_all('div', attrs={'class': 'g'})

links = []
titles = []
descriptions = []
for r in result_div:
    # 获取每个搜索结果的链接、标题、描述
    link = r.find('a', href=True)
    if link:
        links.append(link['href'])
    title = r.find('h3')
    if title:
        titles.append(title.text)
    description = r.find('span', attrs={'class': 'aCOpRe'})
    if description:
        descriptions.append(description.text)

print(links)
print(titles)
print(descriptions)

以上代码可以获取搜索结果页面中,搜索结果的链接、标题、描述等信息。

示例1 – 统计搜索结果中的URL域名

import requests
from bs4 import BeautifulSoup
from tld import get_tld # pip install tld

query = "Python谷歌搜索"
search_result = requests.get(f'https://www.google.com/search?q={query}', headers={'User-Agent': 'Mozilla/5.0'})

soup = BeautifulSoup(search_result.text, 'html.parser')
result_div = soup.find_all('div', attrs={'class': 'g'})

domains = {}
for r in result_div:
    # 获取每个搜索结果页面的URL
    link = r.find('a', href=True)
    if link:
        url = link['href']
        # 获取URL的域名
        domain = get_tld(url)
        # 统计URL域名的出现次数
        if domain in domains:
            domains[domain] += 1
        else:
            domains[domain] = 1

# 按照出现次数排序
sorted_domains = sorted(domains.items(), key=lambda x: x[1], reverse=True)

for d in sorted_domains:
    print(d[0], d[1])

以上代码会对搜索结果中每个页面的URL进行统计,并按照出现次数排序打印出来。

示例2 – 获取搜索结果页面的第一个概述信息

import requests
from bs4 import BeautifulSoup

query = "Python谷歌搜索"
search_result = requests.get(f'https://www.google.com/search?q={query}', headers={'User-Agent': 'Mozilla/5.0'})

soup = BeautifulSoup(search_result.text, 'html.parser')
result_div = soup.find_all('div', attrs={'class': 'g'})

descriptions = []
for r in result_div:
    # 获取每个搜索结果页面的概述信息
    description = r.find('span', attrs={'class': 'aCOpRe'})
    if description:
        descriptions.append(description.text)

print(descriptions[0]) # 输出搜索结果页面中第一个概述信息

以上代码可以获取搜索结果页面中的第一个概述信息,并输出到控制台中。