使用BeautifulSoup查询关键词谷歌搜索结果排名.

使用BeautifulSoup查询关键词谷歌搜索结果排名

使用BeautifulSoup查询关键词谷歌搜索结果排名

  谷歌关键词排名是当用户搜索关键词时网站在谷歌搜索中的位置。换句话说,Google 搜索基本上是在搜索索引中对数千亿个网页进行排序,以在几分之一秒内找到最相关、最有用的结果,并以一种可帮助您找到所需内容的方式呈现它们。

  在本文中,我们将学习如何使用BeautifulSoup查询关键词谷歌搜索结果排名,首先需要了解 Google 排名的基础知识,然后继续使用 Python 进行查找。

使用BeautifulSoup查询关键词谷歌搜索结果排名

  我们使用了一个叫做requests的模块,它有一个方法get返回一个包含页面内容、状态等的响应,我们将响应保存到一个对象页面,并使用page.text方法从对象中提取页面内容,并使用漂亮的汤来使用 python 的内置 HTML 解析器解析 HTML 中的文档,以便我们可以访问 HTML 文档中的数据并从搜索的关键字中获取 URL。

需要的模块

  我们需要在你的系统中通过pip分别安装requests和bs4这两个模块。请求:请求模块允许您发送 HTTP 请求并返回包含所有数据(例如状态、页面内容等)的响应。什么是Python模块,可参考python模块

pip install requests

  Beautiful Soup:beautiful Soup模块允许您使用 python 的内置 HTML 解析器解析原始 HTML 或 XML 文档,以便我们可以从解析的文档中提取数据。推荐:Beautiful Soup教程

pip install bs4

查询关键词排名方法分析

  1、我们需要提供要搜索的关键字和网站,如果它存在于给定数量的搜索查询中,则可以找到排名。

谷歌搜索的基本网址:“https://www.google.com/search?q=” 
通过用“+”替换空格来添加关键字 
添加 &num=30 以及将搜索结果的数量表示为 30
最终网址 = “ https://www.google.com/search?q=wordpress博客主题&num=30”

Google搜索结果页面

  2.使用requests.get(url)方法向 Google 搜索发送 HTTP 请求,该搜索返回来自搜索引擎的响应,该响应作为对象保存到页面。

page = requests.get(“https://www.google.com/search?q=wordpress博客主题&num=30”)

  3.使用page.text方法获取页面内容,使用beautiful Soup解析原始HTML。

soup = BeautifulSoup(page.text, 'lxml')

  这将创建一个解析树,帮助访问 HTML 文档中的数据。

  4.使用soup.find_all()找到具有相同类“ZINbbc xpd O9g5cc uUPGi”的div,因为它包含所有搜索查询以及<a> 标签内的URL,并将其存储在result_div 中。(参考下面有开发者工具的图片)

result_div = soup.find_all(‘div’, attrs={‘class’: ‘ZINbbc xpd O9g5cc uUPGi’})

这是开发人员工具的图像,其中所有搜索查询都具有相同的 div 类但包含不同的 URL,我们可以通过检查 <a> 标记中的 URL 看到这里的排名为 2。

  5.迭代 result_div 并找到 <a> 标签并检查是否存在任何 URL,如果找到,则检查它是否与输入中提供的网站匹配并将排名添加到 rank_list。(rank_list 是一个字符串变量,因为可以出现多个等级)

link = div.find("a", href=True) 
if link['href'][7:7+len(website)] == website: 
    rank_list += str(rank)+","

  6.迭代结束后,返回rank_list并打印rank。下面是完整的实现:

import requests
from bs4 import BeautifulSoup

def find_rank(keyword, website, search_query):
    
    rank, rank_list = 1, ""
    url = "https://www.google.com/search?q="
    keyword = keyword.replace(" ", "+")
    url = url + keyword + "&num=" + str(search_query)
    page = requests.get(url)
    soup = BeautifulSoup(page.text, 'lxml')
   
   
    result_div = soup.find_all(
        'div', attrs={'class': 'ZINbbc xpd O9g5cc uUPGi'})

   
    for div in result_div:
        try:
            link = div.find("a", href=True)
            if link['href'][7:7 + len(website)] == website:
                rank_list += str(rank) + ","
            rank += 1
        except:
            pass
    return (rank_list, "Website Missing")[rank_list == ""]

if __name__ == "__main__":
    keyword = "wordpress博客主题"
    website = "https://www.pythonthree.com/"
    search_query = 50
    rank = find_rank(keyword, website, search_query)

    if rank == "Website Missing":
        print(rank)
    else:
        print("Rank of Website :", rank[:-1])

  输出:

Rank of Website : 28

总结

  以上是晓得博客为你介绍的使用BeautifulSoup查询关键词谷歌搜索结果排名的全部内容,本文提供的是简单的查询原理,里面没有涉及爬虫的header信息,也没有区分国家和地区来查询排名,更没有使用用户代理来防止被浏览器屏蔽等措施。

  推荐:python基础教程


滚动至顶部