[英]Scrape pages using beautiful soup
我有两个略有不同的网址: https ://www.booli.se/annons/2278076,https: //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()
一个想法是刮掉与该值相关联的标签。 正如我从网站上看到的那样,包含信息的每一行都是一个带有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
我没有自己测试代码,但想法是遍历项目列表,并获得标记和标记的值。 然后,您可以将对保存在字典中,并根据您的喜好处理案例。
你实际上可以发现它们之间的区别。 您的数据之前还有一个跨度。
<span class="property__base-info__unit">Utropspris</span>
如您所见,您也可以废弃此元素。 如果跨度内容是Utropspris
,这意味着数据是Utropspris,如果不是,这意味着Avgit。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.