5

我目前正在尝试设置一个网络爬虫来从房地产网站中提取数据。这些网站的趋势是每个页面的某些信息不在同一个地方,所以我必须弄清楚如何让它提取包含某些短语的文本元素,而不是基于它们的位置。以下是此类页面的一些示例:

http://www.zillow.com/homedetails/2630-Hazy-Creek-Dr-Houston-TX-77084/28388488_zpid/

http://www.zillow.com/homedetails/16514-Park-Firth-Dr-Houston-TX-77084/28357799_zpid/

请注意某些信息(例如 MLS #)是如何出现在不同位置的。当我从这些条目之一中提取 xpath 时,我得到://*[@id="yui_3_15_0_1_1435013689406_3296"],并且由于我对 xpath 不太熟悉,我不知道如何更改它以查找一些短语(我当然尝试过,但它永远不会成功)。正则表达式似乎是一个很有前途的工具,但是当我使用命令 ^MLS,它应该查找以“MLS”开头的元素时,它根本不起作用。我知道必须有一个简单的方法来做到这一点,但这是我第一次使用这项服务,所以我还不太熟悉。建议将不胜感激。

4

1 回答 1

6

正则表达式不允许您提取数据,只能清理或修改已提取的文本。

您需要创建一个 XPath 来提取所需的数据。我为你做了一个例子:

//*[@role="main"]//li[contains(text(), "MLS ")]

说明:查找页面的主要部分,然后搜索<li>包含文本的 a "MLS"。这将提取类似"MLS #: 66521347"

您现在可以将列类型选择为“数字”以仅获取数字(您也可以使用正则表达式,这正是您可以用它做的事情)。

编辑:即使 XPath 是正确的,它也不会返回 import.io 中的数据。还有另一种方法:使用 XPath 将所有文本带入该部分,然后使用正则表达式选择 MLS。

要使用的 XPath:

//*[@role="main"]/section[@class="zsg-content-section "][1]

要使用的正则表达式:

MLS #: (\d+)
于 2015-06-23T13:46:27.853 回答