通过Excel或VBA从Web提取信息

时间:2018-01-23 14:21:39

标签: html excel vba web-scraping

我是编码的初学者。我现在正在学习如何通过Excel或VBA从Web获取信息。

我可以通过以下示例询问我的问题: 在以下链接(https://www.schooland.hk/ss/tsuen-wan)中, 当您单击我显示的红色圆圈中的那些单独的蓝色字词时,它将导致单个页面。 enter image description here 在所有这些单独的页面中,例如(https://www.schooland.hk/ss/twgss),他们也有这样的部分显示相同类型的信息,如电话号码等(如下图所示)。 enter image description here

我的工作是使用电子表格,例如excel,显示一个表格,列出红色圆圈中所有单独的字词信息,而不使用复制和粘贴。

我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

以下使用XHR来完成您的任务。

备注:

GetSchoolInfo是主要的子。

它将初始请求发送给"https://www.schooland.hk/ss/tsuen-wan"。它使用函数GetHTMLDoc返回传入的网页网址的HTML文档。

您可以使用

的CSS选择器检索您在第一个红色圆圈区域中显示的各个学校的链接
.school-table a

"." means className,因此.school-table表示具有className school-table的所有元素。  " a" means all a tags contained within那个。

此CSS查询返回的示例结果:

CSS query

为每个链接返回的实际HTML如下所示:

<A title="Tsuen Wan Government Secondary School" href="about:twgss">??????</A>

我们可以利用以下事实:每个链接到页面的about:之后的短字符串,即twggs"https://www.schooland.hk/ss/"的一般基本字符串相结合,以给每个学校特定的URL即  "https://www.schooland.hk/ss/twggs"

函数GethRefSubString获取此短字符串,该字符串与常规基本字符串BASEURL一起使用。此学校特定链接已添加到schoolLinks集合中。

schoolLinks集合使用GetHTMLDoc循环处理指向学校特定新HTML文档的链接。

每个学校页面上的联系信息(问题中第二个红色圆圈区域)位于HTMLDivElement,其中包含className contact。适当的索引是0,即集合中的第一个匹配的className(也是唯一的!)。

Contact class

可以通过.innerText的{​​{1}}属性访问所有必需的联系信息。

示例网页内容:

webpage

示例代码输出:

Code output

VBA代码:

HTMLDivElement

所需参考:

  1. VBE&gt;工具&gt;参考文献&gt; HTML对象库