【发布时间】:2020-04-25 16:29:16
【问题描述】:
我正在尝试使用 python Beautiful Soup 解析 HTML。
部分HTML如下所示:
<div class="zsg-lg-1-3 zsg-md-1-1 zsg-sm-1-1 value-info-block" id="yui_3_18_1_1_1587802421734_2498">
<div id="overview" class="scroll-track" data-label="Market Overview"></div>
<h2 id="yui_3_18_1_1_1587802421734_2509">San Francisco Market Overview</h2>
<h6 class="zsg-fineprint hdr-date">Data through Mar 31, 2020</h6>
<ul class="value-info-list" id="yui_3_18_1_1_1587802421734_2497">
<li id="yui_3_18_1_1_1587802421734_2496">
<span class="value" id="yui_3_18_1_1_1587802421734_2495">
$1,310,500
</span>
<span class="info zsg-fineprint" id="yui_3_18_1_1_1587802421734_2524"> Median listing price
<span class="info zsg-fineprint">(Jan 31, 2020)</span>
</span>
</li>
</ul>
</div>
提取HTML的python代码如下:
def process_market_overview(self):
parent = self.page_soup.find("div", {"data-label": "Market Overview"}).parent
for li in parent.findAll("li"):
value = li.find("span", {"class": "value"}, recursive=False).text.strip()
key = li.find("span", {"class": "info zsg-fineprint"}, recursive=False).text
key = key[0].strip()
print(" key :{} , value:{}".format(key, value))
但是我得到的输出是错误的。在这种情况下如何解析? 输出是:
key : , value:$1,447,191
key : , value:-2.3%
key : , value:$1,310,500
key : , value:$1,364,300
我想要的是从 HTML 中提取值 $1,310,500 和键 Median listing price。
网址:https://www.zillow.com/sanfrancisco-ca/home-values/
如果有更好的解析方法,请告诉我。
完整代码可以访问链接:https://github.com/srth12/Eclipse-Workspace-/blob/master/ariya_python_scrapping/zillow_scrapper.py
【问题讨论】:
-
您能提供网址吗?此外,是否有可能 key 包含“中值列出价格”,并且当您调用 key[0].strip 时,您正在选择第一个字符(空格)然后也将其剥离?
-
我遇到问题,因为我在尝试访问该页面时收到了重新验证检查。但是我可以确认
key确实包含了文本,并且您正在按照我在上面的评论中所说的进行操作。 -
您必须将带有用户代理的标头作为任何浏览器名称传递以避免验证码问题。顺便说一句,您对关键空格的看法是正确的。
-
zillow.com 提供free api
标签: python python-3.x web-scraping beautifulsoup web-crawler