用漂亮的汤刮书页

2024-10-02 02:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个稍微不同的url:https://www.booli.se/annons/2278076https://www.booli.se/bostad/507292

第一页和第二页的区别:第二页没有Utropspris(估计价格)。你知道吗

在第一个链接中,我将使用以下代码获得估计价格(Utropspris):

in[1]= soup.findAll('span', class_='property__base-info__value')[1].text.strip() 
out[1]= u'3 800 000 kr\n\t\t\t64 407 kr/m\xb2'

然而,在第二个链接使用相同的代码我用上面我会得到费用(Avgift)

in[2]= soup.findAll('span', class_='property__base-info__value')[1].text.strip() 
out[2]= u'4 425 kr/m\xe5n'

如何告诉我的代码,在第二个链接中,当我使用相同的代码时,这不再是估计价格(Utropspris)。这是费用(avgift),另存为费用,并为估计价格写NA。这是我代码的一部分,可能会有所帮助。你知道吗

url=https://www.booli.se/bostad/507292
import requests
from bs4 import BeautifulSoup
request = requests.get(url)
soup = BeautifulSoup(request.text,'lxml')
soup.findAll('span', class_='property__base-info__value')[1].text.strip()

Tags: 代码texthttpsurl链接www价格property
2条回答

你可以找到它们之间的区别。数据之前还有一个跨度。你知道吗

 <span class="property__base-info__unit">Utropspris</span>

如您所见,您也可以废弃此元素。如果span content为Utropspris,则表示数据为Utropspris,否则表示Avgit。你知道吗

其中一个想法是还可以刮除与值相关联的标记。正如我在站点中看到的,包含信息的每一行都被放入一个带有class="property__base-info__item"li项中。你知道吗

因此,在第一个链接中,您有一个带有class="property__base-info__unit"的span,它的文本值是“Utropspris”,还有一个带有property__base-info__value的span,它是您已经获得的值。你知道吗

你可以这样做:

elements = soup.findAll('li', class_='property__base-info__item')
pairs = {}
for element in elements:
   tag = element.find('span', class_='property__base-info__unit').text
   value = element.find('span', class_='property__base-info__value').text
   pairs[tag] = value

我还没有单独测试代码,但是我的想法是遍历项目列表,并获得标记和标记值。然后,您可以将这些对保存在字典中,并以您喜欢的方式相应地处理案例。你知道吗

相关问题 更多 >

    热门问题