如何使用Python实现谷歌搜索的自动化?

1,318 阅读19分钟

你想用Python自动化地将所有谷歌搜索结果刮成一个文件吗?你想在几分钟内知道你的搜索查询的答案吗?这将是非常棒的!对吗?

你不需要打开谷歌浏览器并在搜索框中输入你的搜索查询。也不需要手动滚动超过10页的URL页面来获得查询的答案。所有的一切都将自动为你完成。很好!对吗?

使用Selenium webdriver和Python可以实现谷歌搜索结果的自动化。 你只需要对Python和HTML编程有一个基本的了解就可以实现这一点。

在这篇文章中,你将学习如何在google.com中填写搜索查询,并使用webdriver 点击提交。然后,你将学习刮除带有标题的网站URL,并获得查询的答案。

我们将向你解释google搜索结果页面的每个元素以及如何提取它们。

为什么自动化谷歌搜索结果如此重要?主要原因是你可以在不多的时间内得到一个文件中组织的所有细节,没有任何错误和遗漏。例如,如果你把google中的10页URLs全部复制到你的文件中,以便进一步研究。你可能会复制部分URLs,也可能会遗漏一些重要的网页URLs。这对你来说是一项非常费力和无聊的工作。

我们还可以在哪些方面使用Selenium webdriver这个强大的工具。你可以通过Selenium webdriver在Facebook、Twitter等网站上自动发帖。它还可以用来刮取竞争对手的产品价格进行价格比较。

我们可以开始学习了吗?

什么是Selenium?

Selenium是一个开源软件,用于自动化网络应用程序的测试目的。简单地说,它是一个免费软件,可以使你的浏览器自动化。由Jason Huggins在2004年创建,用于自动化网络测试,他是Thoughtworks的一名工程师。他的日常职责是测试网络应用程序。人工测试是如此乏味和耗时。因此,他用Java脚本创建了这个软件,使浏览器的交互自动化。

一开始,Selenium只限制访问google.com上的页面。它不能用于其他搜索引擎,如Yahoo.com。为了克服这个问题,计算机工程师开发了新版本的Selenium。

你可以在下面的表格中看到Selenium在这段时间内的发展。

创造者软件名称开发情况
Paul HammantSelenium远程控制或Selenium 1创建HTTP代理服务器来欺骗浏览器,使其认为Selenium来自同一个域。
Patrick LightbodySelenium Grid缩短测试执行时间。
Shinya KasataniSelenium IDE建立Fireworks扩展,通过记录和回放功能实现浏览器自动化。这进一步减少了执行时间。
西蒙-斯图尔特WebDriver在操作系统层面而不是在JavaScript上实现浏览器的自动化。
Selenium团队Selenium 2合并了Web Driver和Selenium RC,形成强大的软件,以实现更快的自动化。

什么是Web驱动?

它是一个现代工具,用于实现跨浏览器平台的自动化网络测试。测试在不同的浏览器中执行,如Firefox、Google Chrome、Internet Explorer和Safari。

网络驱动程序支持java、PHP、Python、Perl和Ruby编程语言。

网络驱动的主要优点如下:

  • 安装简单,因为不需要安装服务器。
  • 驱动程序和浏览器之间直接通信。
  • 真实的浏览器互动,执行速度更快。
  • 可以在任何操作系统中执行。
  • 由于自动测试,减少了雇用测试人员的费用。

浏览器可以直接与其中一个驱动进行通信,如chrome驱动、Firefox选项、Safari选项、Edge驱动和Internet Explorer选项。

你可以用selenium web驱动来自动执行常规任务,如发推特、谷歌搜索、搜索LinkedIn资料和网络搜刮

此外,我们还可以用它来自动填写表格,如项目管理的时间表。

Selenium网络驱动的局限性在于它不能支持基于窗口的应用程序。它只能支持基于网络的应用程序,不能测试移动应用程序。它不能支持新的浏览器,不能处理验证码和条形码。

谷歌搜索结果页面的要素

如果你想了解一个话题、信息,或者想以最优惠的价格购买产品,你必须在大多数情况下通过谷歌搜索,对吗?你有没有分析过谷歌搜索结果页的要素?谷歌搜索结果页面或我们简称为SERPS,有不同的元素。诸如有机结果、 知识图谱、人们还问、视频、热门故事、相关搜索等元素。在本节中,我们将详细了解它。

有机结果

谷歌将显示所有自然收到的结果,而不是付费的。这些结果是根据搜索查询并根据谷歌的秘密算法显示的。搜索引擎优化也被用于有机搜索结果的排名。这些结果包括蓝色链接中的文字,绿色显示的URL,以及网站的片段或简短描述。

人们还问?

根据你的搜索查询。谷歌使用其算法和前一个用户的查询来显示相关问题的块。当展开每个问题块时,你可以看到回答该问题的片段,并有URL链接。这个块出现在一些有机或付费结果之后。只要你点击最后一个块,它就会弹出更多的问题块。

知识图谱。

当你搜索一个主题,例如 "python "或品牌/公司名称 "Apple"。谷歌收集了大量的数据,并以有效的方式在信息框中呈现给你。这是我们的目标区域,为你的搜索查询获得答案。

在这个元素中,你可以以更简洁的方式看到关于搜索查询的所有信息。 谷歌从可靠的资源中获取数据,如维基百科、中情局世界实录、模式信息等。它在桌面上的SERPS屏幕的右侧。

你可以从图片2中标记的以下五个元素中获得你的搜索查询的所有答案

  1. 图片:这些是您的搜索查询的图片。例如,显示的是Python 3 和Python标志。
  2. 标题:这里显示的是标题。
  3. 描述: 显示您的搜索查询的基本信息。例如,在这一部分解释了什么是Python。
  4. 副标题:显示与您的搜索查询有关的重要事实。
  5. URL链接 :显示与搜索查询相关的一些重要主题。

视频

SERP显示某些关键词的视频。它在其他元素中显示为一个单独的元素,称为视频。通常情况下,SERP会从YouTube上提取视频,如果嵌入的视频可用,则从网站上提取。最初,你可以在 SERP 中看到 3 个视频。当你点击箭头按钮时,你可以查看更多的视频。SEMrush指出,谷歌只显示6%的搜索查询视频结果。是这样吗?你可以研究一下。

相关搜索

这个功能显示在搜索结果的底部。尽管它在底部,但对我们来说是非常重要的数据。从谷歌算法和以前的用户搜索中,显示了关键词。你可能无法根据你的搜索查询找到必要的信息。但是从相关的搜索关键词,你可以找到你想要的信息。从相关的搜索结果中,你的研究会有很好的想法。

建立自动化的框架

好了,你已经了解了谷歌的元素是什么。很好!现在让我们开始使用Selenium、Web Driver和Python来实现Google查询的自动化。

在进一步进行之前,我希望你已经熟悉了基本的HTML结构。让我们开始吧,不要再拖延了。

安装库

首先,我们应该安装Selenium。

打开终端或命令,输入以下命令

pip install selenium

然后用这个 链接安装Webdriver Chrome驱动。

最后,使用下面的命令安装CSV

pip install python-csv

现在我们的框架已经设置好了,可以进一步进行谷歌搜索的自动化。

在深入学习代码之前,让我们通过程序来获取CSV文件中的谷歌搜索结果。

自动化谷歌搜索的程序

Procedure to Automate Google Search

现在让我们深入到编码中,打开你的Python空闲外壳

导入Python库

首先,让我们使用代码导入Selenium Webdriver、Sleep和CSV。

from selenium import webdriver
from time import sleep
import csv

访问和浏览网页

我们告诉电脑打开chrome浏览器,进入www.google.com,搜索查询 "Python"。

# specify path of Chrome Driver, code 1
driver = webdriver.Chrome('/Users/mohamedthoufeeq/Desktop/chromedriver')

# use driver.get()method to navigate the web page by giving URL address
driver.get('https://www.google.com/') code 2

# locate "English" Language by _Xpath / to change language to English, code 3
English = driver.find_element_by_xpath('//*[@id="SIvCob"]/a[2]')
English.click()

变量driver 是谷歌浏览器的一个实例。我们将使用这个变量驱动来执行命令。找到你的电脑上安装的Chrome驱动程序的位置。在代码1中,你必须把你的Chrome驱动的位置路径写进去。当你执行代码1和代码2时,Google Chrome浏览器将打开并自动进入google.com。然后,使用driver.get() 的方法来打开网页。下一行代码是可选的,如果谷歌网页是以其他语言而不是ENGLISH打开的。然后使用代码3将语言改为英语。让我们更详细地看一下这段代码。

通过在网页上点击右键并点击检查,打开HTML脚本(见图5)。

在HTML中,有不同类型的属性和标签,如class,id,href,a,div,p 等,以访问特定元素。我们可以使用find_element_ by_method 来访问所有元素。

这些方法如下所示:

  • find_element_by_class_name
  • find_element_by_css_selector
  • find_element_by_id
  • find_element_by_link_text
  • find_element_by_name
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element _by_xpath

点击标记的(下图中的黑色圆圈)检查元素图标,将鼠标悬停在网页上的任何元素上。悬停在 "ENGLISH "链接上,以检查该元素。 在HTML中找到href 元素,然后点击right > copy > copy xpath ,再粘贴到查找栏。

你得到的xpath是"//*[@id="SIvCob"]/a[1]" ,有属性id ,有标签a 。 使用这个xpath 来访问代码3中google主页的英文链接(见图片6)。

让我们来讨论一下Selenium中的xpath。它是一个XML路径,用于浏览HTML文档中的属性和标签。xpath的语法是

xpath=//tagname[@attribute='value']

//		: 	select current Path.
Tagname	        : 	tagname of particular path
@		: 	select attribute
Attribute	: 	attribute of the particular path
Value		: 	name of the attribute

如果你不能用一般的选择器(如_classname_ id )找到元素,那么就用xpath来寻找元素。

因此,我们选择XPath来寻找英文链接。

一旦你收到存储在英文变量中的英文链接,点击同样的链接就可以继续。Web驱动的click() 方法被用来与网页交互(见第二行代码3)。

在搜索框中输入搜索查询 "python "并输入。然后创建这4行代码,如下所示。

# locate search query form in html script by _name, code 1
search_query=driver.find_element_by_name("q")

# use send_keys() to simulate key strokes/ type the search term "python"b code 2
search_query.send_keys("python")

#locate Google Search button by _xpath code 3
google_search_btn =driver.find_element_by_xpath('//*[@type="submit"]')

# use submit() to mimic enter key code 4
google_search_btn.submit()

第一步是寻找搜索框的HTML元素。创建search_query 变量来存储搜索框元素,以便进行按键操作。在HTML脚本中,当检查搜索框时,你可以看到属性name=“q” (见图片7)。使用这个属性来定位搜索查询,如代码1所示。

在代码2中,使用send_keys() 方法来提示键入 "python "的按键。为了继续进行,我们必须点击提交按钮。代码3和代码4完成了我们预定的动作。用于定位谷歌搜索按钮元素属性的Xpath[@type="submit”] (见图片8)。

注意,星号 "*"是用来搜索任何标签的。

很好!你有一个自动的搜索查询。你有一个自动搜索查询。

现在让我们开始编写代码来提取谷歌搜索元素。

有机结果

这些结果给了我们所有的网站,通常是使用谷歌的秘密算法和SEO关键词得出的。

# locate URL for organic results element from html script by _xpath, code 1
organic_result = driver.find_elements_by_xpath('//*[@class="yuRUbf"]/a[@href]')

# get all URL and store it in variable "url_list1" list using for loop, code 2
url_list1 = []
for organic_url in organic_result:
          if not 'google' in organic_url.get_attribute("href"):
           url_list1.append(organic_url.get_attribute("href"))     
      
# locate title of URL for organic results element from html script by _xpath , code 3
url1_title = driver.find_elements_by_xpath('//*[@class="LC20lb DKV0Md"]')

# get all title of the URL and store it in variable "title_url_list1" list using for loop, , code 4
title_url_list1 =[]
for title_url1 in url1_title :
          text = title_url1.text
           title_url_list1.append(text)

在网页中,将第一个URL搜索结果的标题悬停在“https://www.python.org "并检查该元素。

你可以看到 href 链接属性。然后确定它属于哪个类别,这个href链接是class = “yuRUbf”

你使用代码1创建xpath来定位这个有机结果的URL。

Xpath的更多细节。

Xpath in more detail:
('//*[@class="yuRUbf"]/a[@href]')

// 			- 	selecting current path of class = “yuRUbf” 
* 			- 	selecting current tagname of class = “yuRUbf” which is div
[@class="yuRUbf"] 	- 	selecting the class with value "yuRUbf"
/a[@href]		- 	selecting href element after the class

这个有机URL元素被存储在变量organic_result 。代码2将有机结果元素的URL存储在名为url_list1列表 中。为了获得href即URL链接的属性,使用get_attribute 方法。另外,我们需要从google中删除URL链接,因为这个网站属于 "人们也问 "元素。之后,有机元素的每个URL的标题将被提取并存储在列表 "title_url_list1"中。为了做到这一点,再次检查元素的标题 "Welcome to Python.org "并确定xpath。类是 "LC20lb DKV0Md "来定位元素的标题(参考图片10)并使用代码3。使用for循环将标题存储到一个列表title_url_list1 ,并追加 到列表中,如代码4所示。

你的搜索查询的有机结果被提取并存储在各自的变量中,如上所示。接下来,我们可以转到下一个元素。

人们也问

在这个元素中,我们可以发现其他人问了哪些与你的搜索查询相关的问题。

这对你的研究内容来说是有用的数据。

现在,让我们按照上述类似的步骤来搜刮 "人们也问 "元素。

首先,使用检查元素选项找到HTML中**"人们也问 "**元素的URL链接。

# locate URL in "People also ask" element from html script by _xpath, code 1
People_quest = driver.find_elements_by_xpath('//*[@class="AuVD cUnQKe"]//a[@href]')

# get all URL and store it in variable "url_list2" list using for loop, code 2
url_list2 = []
for People_url in People_quest :
        if not 'google' in People_url.get_attribute("href"):
                if not 'search' in People_url.get_attribute("href"): 
                        url_list2.append(People_url.get_attribute("href"))

# locate title of URL in "People also ask" element from html script by _xpath , code 3
url2_title = driver.find_elements_by_xpath('//*[@class="iDjcJe IX9Lgd wwB5gf"]')

# get all title of the URL and store it in variable "title_url_list2" list using for loop , code 4
title_url_list2 =[]
for title_url2 in url2_title :
          text = title_url2.text
          title_url_list2.append(text)

你可以使用class = “AuVD cUnQKe” ,得到People also ask元素的URL。这个类只属于People also ask元素(见图11)。在代码1中,创建People_quest 变量来存储People also ask的URL元素。参考图片12,从People also ask元素中获取URLs的标题。

接下来在url_list2和title_url_list2中存储网页的标题和URLs。

现在让我们转到从相关搜索元素中提取搜索词。

相关搜索

这个元素提供了与你的搜索查询相关的新的好主意。它在页面的最后一面。有8个独特的搜索词来自其他人的搜索和谷歌的算法。让我们看看如何废止这个极好的元素相关搜索。

向下滚动页面,右击这个元素,然后点击检查元素。

# locate URL for Related searches element from html script by _xpath, Code 1
 related_search = driver.find_elements_by_xpath('//a[@class ="k8XOCe R0xfCb VCOFK s8bAkb"][@href]')

 # get all URL and store it in variable "url_list5" list using for loop
  url_list5 = []
  for related_url in related_search :
          url_list5.append(related_url.get_attribute("href"))         
  
  # locate title of URL for Related searches element from html script by _xpath
    url5_title = driver.find_elements_by_xpath('//*[@class="s75CSd OhScic AB4Wff"]')

  # get all title of the URL and store it in variable "title_url_list5" list using for loop
    title_url_list5 = []
    for title_url5 in url5_title  :  
              text = title_url5.text
              title_url_list5.append(text)       

related_search 变量使用find_elements_by_xpath 方法存储相关搜索元素的URL。

在class = "k8XOCe R0xfCb VCOFK s8bAkb "之前有一个标签 "a"。所以xpath的语法是('//a[@class ="k8XOCe R0xfCb VCOFK s8bAkb"][@href]'),如代码1所示。

接下来使用上述代码将相关搜索的网页的标题和URL存储在列表变量title_url_list5url_list5

知识图谱

这是谷歌搜索结果页面中一个有趣的新元素。在这个元素中,你可以在描述部分回答你的搜索查询。

这些信息以浓缩的形式显示,有文字、图片、视频和URL。

让我们把知识图谱分成几个部分,并从中刮出一些基本数据。

  1. 顶部图片
  2. 主要文字标题
  3. 描述/片段
  4. 小标题
  5. URL链接

提取主要文本标题的细节。

检查标题的元素,确定属性和标签。

# locate the main title for Knowledge Graph element from html script by _xpath
Know_Main_head = driver.find_elements_by_xpath('//*[@class="K20DDe R9GLFb JXFbbc LtKgIf a1vOw BY2RHc"]')

# get the main title  and store it in variable "text_url3" using for loop
for title_url3 in Know_Main_head:
     text_url3 = title_url3.text

知识图谱类的主标题是 "K20DDe R9GLFb JXFbbc LtKgIf a1vOw BY2RHc"。

该元素被存储在变量Know_Main_head 。然后文本细节被存储在text_url3 。尽管在主标题中是一个单一的数据字符串。该元素被存储在一个列表中,.text 方法不能在列表中工作,所以我们使用for循环来获取细节

提取描述/片段的细节。

使用检查元素图标识别这个元素的属性和标签。

# locate description of Knowledge Graph element from html script by _xpath
Know_desc = driver.find_elements_by_xpath('//*[@class="PZPZlf hb8SAc"]')

# get description and store it in variable "text_desc" using for loop
for desc in Know_desc:
    text_desc = desc.text 

该类的属性是 "PZPZlf hb8SAc",它被存储在Know_desc 变量中。请参考图片16。

使用for循环和.text 方法,我们得到该元素的文本。

提取副标题的细节。

这些副标题在片段的下面。并有关于搜索查询的有用事实。

确定这个元素的属性和标签以提取数据。

# locate title of sub head for Knowledge Graph element from html script by _xpath
Know_subhead = driver.find_elements_by_xpath('//*[@class="rVusze"]')

# get all title of the URL and store it in variable "title_subhead" list using for loop
title_subhead = []
for subhead in Know_subhead:
         text = subhead.text
         title_subhead.append(text)

副标题的类属性rVusze ,它被存储在变量Know_subhead (见图片17)。

同样,使用for循环和.text() 方法,将事实存储在列表变量title_subhead

在此,列表中有更多的子标题项目。

提取网站标题和URLs

使用hover动作检查元素的网页名称和Url链接。

# locate title of URL for Knowledge Graph  element from html script by _xpath
Know_links_name = driver.find_elements_by_xpath('//*[@class="OS8yje oJc6P QTsT3e"]')

# get all title of the URL and store it in variable "title_url_list3" list using for loop
 title_url_list3 = []
 for title_url3 in Know_links_name: 
             text = title_url3.text
             title_url_list3.append(text)

 # locate URL for Knowledge Graph element from html script by _xpath
 Know_graph = driver.find_elements_by_xpath('//*[@class ="mFVw3b"]//a[@href]')

  # get all URL and store it in variable "url_list6" list using for loop
  url_list6 = []
  for graph_url in Know_graph :
            url_list6.append(graph_url.get_attribute("href"))

你可以识别网页名称和URL链接属性的class = " OS8yje oJc6P QTsT3e "和class = "mFVw3b"(见图18-20)。

变量Know_links_name ,存储网页名称的元素。变量Know_graph 存储了知识图谱中的网页的URL链接。

使用for循环,.textget_attribute 方法,我们得到一个网页名称和URL链接的列表。

你得到了知识图谱中的所有项目并存储在变量列表中。

现在你可以转到下一个有趣的元素。

# locate URL for Videos element from html script by _xpath
Video = driver.find_elements_by_xpath('//a[@class ="X5OiLe"][@href]')

# get all URL and store it in variable "vid_url" list using for loop
vid_url = []
for vid in Video :
         vid_url.append(vid .get_attribute("href"))

# locate title of URL for Videos element from html script by _xpath
Video_title = driver.find_elements_by_xpath('//*[@class="fc9yUc oz3cqf p5AXld"]')

# get all title of the URL and store it in variable "vid_title" list using for loop
vid_title = [] 
for Vid_text in Video_title :
             text = Vid_text.text
              vid_title.append(text) 

将鼠标悬停在视频的URL和标题上以获得标签和属性(见图21-22)。

视频Url的xpath是‘//a[@class ="X5OiLe"][@href]’ ,其中a是视频URL链接的标签,在路径中显示在第一位。这些元素被存储在Video Variable中。

视频标题的xpath是‘//*[@class="fc9yUc oz3cqf p5AXld”]’ ,它被存储在Video_title 变量中。

标题和URL链接被存储在vid_titlevid_url 列表变量中。

祝贺你! 你已经使用Selenium从Google搜索结果页面的元素中提取了所有的细节。

为了使程序更顺利地运行而不出错,还有几点需要补充:

  • 使用 [sleep](https://blog.finxter.com/python-selenium-wait-function/ "Python Selenium Wait Function")函数让程序等待,这样find_all_elements ,就有足够的时间来提取HTML元素。
from time import sleep
# use sleep method between each Google elements
sleep(1)
  • 我上面写的脚本只提取了第一页的搜索结果。你可以添加几行代码来搜刮更多页面的结果。为此目的,使用For循环和驱动.get方法来访问下一页,如下图所示。
for i in range(7):
       Next_page = driver.find_element_by_xpath('//*[@id="pnnext"]')
       ''' Script for extracting Search result from Organic Result google elements'''
           ….
        Next_page.click()
       sleep(1)

  • 你应该只为从有机结果元素中提取细节而改变下一页,而不是在其他元素上。因为这些元素只在第一页中可用。下面的代码将完成预定的动作。
for i in range(7):
    Next_page = driver.find_element_by_xpath('//*[@id="pnnext"]')
    ''' Script for extracting Search result from Organic Result google elements'''
    while i == 0: 
    ''' Script for extracting Search result from "People also ask" google element'''
    ''' Script for extracting Search result from "Related searches" google element'''
				…
				i = i + 1
        Next_page.click()
       sleep(1)	

导出数据到CSV文件

以下是将所有元素的结果导出到Google_Search.csv 文件的代码。

with open('Google_Search.csv','w', newline = "") as Google:
                     Main_header1 = ["People also ask"]
                     People_header_writer = csv.DictWriter(Google, fieldnames = Main_header1)
                     People_header_writer.writeheader()
                     header1 = ['Question','URL']
                     People_writer = csv.DictWriter(Google, fieldnames = header1)
                     People_writer.writeheader()
                     for a,b in zip(title_url_list2,url_list2):
                            People_writer.writerow({'Question' : a , 'URL' : b })

                     Main_header2 = ["Related Search"]
                     Related_header_writer = csv.DictWriter(Google, fieldnames = Main_header2)
                     Related_header_writer.writeheader()
                     header2 = ['Search Terms','URL']
                     Related_writer = csv.DictWriter(Google, fieldnames = header2)
                     Related_writer.writeheader()
                     for c,d in zip(title_url_list5,url_list5):
                            Related_writer.writerow({'Search Terms' : c , 'URL' : d })

                     Main_header3 = ["Knowledge Graph"]
                     Knowledge_header_writer1 = csv.DictWriter(Google, fieldnames = Main_header3)
                     Knowledge_header_writer1.writeheader()

                     Know_Main_header = [text_url3] 
                     Know_Main_header_writer = csv.DictWriter(Google, fieldnames = Know_Main_header)
                     Know_Main_header_writer.writeheader()

                     Know_descp = [text_desc] 
                     Know_descp_writer = csv.DictWriter(Google, fieldnames = Know_descp)
                     Know_descp_writer.writeheader()

                     Know_subhead_header = ["subhead"] 
                     Know_subhead_writer = csv.DictWriter(Google, fieldnames =     Know_subhead_header)
                     Know_subhead_writer.writeheader()
                     for i in zip(title_subhead):
                            Know_subhead_writer.writerow({'subhead' : i})

                     header3 = ['Title','URL']
                     Know_writer = csv.DictWriter(Google, fieldnames = header3)
                     Know_writer.writeheader()
                     for e,f in zip(title_url_list3,url_list6):
                            Know_writer.writerow({'Title' : e , 'URL' : f })

                     Main_header4 = ["Videos"]
                     Video_header_writer1 = csv.DictWriter(Google, fieldnames = Main_header4)
                     Video_header_writer1.writeheader()
                 
                     header4 = ['Title','URL']
                     Video_writer = csv.DictWriter(Google, fieldnames = header4)
                     Video_writer.writeheader()
                     for g,h in zip(vid_title,vid_url):
                            Video_writer.writerow({'Title' : g , 'URL' : h })

                     Main_header5 = ["Organic Results"]
                     Organic_header_writer1 = csv.DictWriter(Google, fieldnames = Main_header5)
                     Organic_header_writer1.writeheader()
                 
                     header5 = ['Web Site Name','URL']
                     Organic_writer = csv.DictWriter(Google, fieldnames = header5)
                     Organic_writer.writeheader()
                     for j,k in zip(title_url_list1,url_list1):
                            Organic_writer.writerow({'Web Site Name' : j , 'URL' : k })

标题和URL的细节被存储在单独的列表变量中。我们必须将其转换为字典,并将数据导出到csv文件。csv.DictWriter 方法用于在CSV文件中写入数据。Zip函数被用来创建一个字典,其中标题是键,URL链接是值。

Google_Search.csv 文件的输出。

结论

Selenium可以使网页浏览器自动化,它是一个强大的工具,可以让你迅速从任何网页上收集有用的数据。你可以在一个文件中从SERP的元素中提取所有的URL和有关你查询的信息。这些信息对于进一步的研究是非常有用的。你也可以用Selenium webdriver从谷歌搜索结果中提取网站的信息。Automate Web Scrap被广泛用于不同的领域,如市场研究、价格比较、机器学习和产品开发。