提取多个搜索结果

问题描述 投票:0回答:3

我创建了一个 VBA 应用程序,允许您从 canada411.ca 网站提取搜索结果。您只需将值插入值“Where”、“What”和“Title”、“Location”和“Phone”就会吐出。在我的代码中 What =“Name”。这是我的代码:

    Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Row = Range("Name").Row And _
 Target.Column = Range("Name").Column Then
  End If

 If Target.Row = Range("Where").Row And _
 Target.Column = Range("Where").Column Then

 'Set Variables What and Where from Canada411.ca to Values on Excel WorkSheet
  Dim IE As New InternetExplorer
  IE.Visible = True
  IE.navigate ("http://canada411.yellowpages.ca/search/si/1/") & _
  Range("Name").Value & "/" & Range("Where").Value

  Do
  DoEvents
  Loop Until IE.readyState = READYSTATE_COMPLETE
  Dim Doc As HTMLDocument
  Set Doc = IE.document
  'Extract from Canada411.ca Source element (first search result)
  Range("Title").Value = Trim(Doc.getElementsByTagName("h3")(0).innerText)
  Range("Phone").Value = Trim(Doc.getElementsByTagName("h4")(0).innerText)
  Range("Location").Value = Trim(Doc.getElementsByClassName("address")(0).innerText)
  IE.Quit

 'Extract for Second Search result

 'Third Search result etc.


  End If
 End Sub

我的问题是我不知道如何获取页面上剩余的结果,我只能获取第一页上的第一个结果。后续搜索结果的源代码与第一个相同,但我似乎无法使其工作。 (在您获得第一个代码后,也许有一个快捷方式可以获取其余代码?)我是 VBA 和 HTML 新手,感谢您的帮助。

html excel vba search web-scraping
3个回答
1
投票

好吧,你有两个选择。

1) 了解如何使用工具->引用库“Microsoft HTML 对象库”导航 DOM 并以这种方式提取。

2)可以将网页拉入Excel工作表,然后只需要从每个单元格中提取数据即可。更简单,但将您与 Excel 联系在一起。使用宏录制器,然后使用 GUI,在功能区数据 -> 来自 Web 上并按照向导操作。


0
投票

在您的链接中将“1”更改为 2、3、4 ...这些是页码!

http://canada411.yellowpages.ca/search/si/1/
http://canada411.yellowpages.ca/search/si/2/
http://canada411.yellowpages.ca/search/si/3/
...

0
投票

提取多个搜索结果:超越手动方法 提取多个搜索结果可能是一项繁琐的任务,但有多种方法可以自动化该过程。以下是一些方法,包括使用 SerpHouse 库的解决方案:

  1. 网页抓取:

这涉及编写代码以编程方式与搜索引擎的网站交互并提取所需的信息。 Beautiful Soup (Python) 或 Cheerio (JavaScript) 等库可用于解析 HTML 内容并提取相关数据,如标题、URL 和片段。

但是,请小心:

道德考虑:尊重用户隐私,避免因过度或不道德的抓取而违反服务条款。 技术复杂性:根据网站结构,抓取可能很复杂,并且随着网站的发展需要持续维护。

  1. 搜索引擎API:

一些付费和免费 API 提供对搜索引擎结果的编程访问。例如,Google Search Console API(功能有限)和 SerpApi(付费)可用于检索特定关键字的搜索数据。

  1. SerpHouse 库(Python):

这个开源库通过为 Google、Bing 和 Yahoo 等各种搜索引擎提供用户友好的界面,简化了搜索结果提取。这是使用 SerpHouse 的示例:

从 Serphouse 导入 GoogleSearch

# Define your search query
query = "best laptops 2024"

# Perform the search
search = GoogleSearch(query)

# Extract results as a list of dictionaries
results = search.get_json()

# Access individual results
for result in results:
    print(f"Title: {result['title']}")
    print(f"URL: {result['link']}")
    print(f"Snippet: {result['snippet']}")
    print("-" * 20)

此代码使用 Google 搜索检索查询“bestlaptops 2024”的搜索结果,并迭代每个结果,打印标题、URL 和代码片段。

记住:

API 限制:请务必检查 API 文档以了解使用限制和服务条款。 数据准确性:API 结果可能并不总是反映实时搜索结果。考虑与其他工具交叉引用。 选择正确的方法取决于您的具体需求、技术专长和道德考虑。

© www.soinside.com 2019 - 2024. All rights reserved.