【问题标题】:Webscraping: Separating phrases from HTML text output in pythonWebscraping:从 Python 中的 HTML 文本输出中分离短语
【发布时间】:2021-11-20 08:13:32
【问题描述】:

我正在学习公寓的网络抓取。一间公寓的 HTML 块如下所示:

输入

# Create a web search and save the results
base = 'https://www.booli.se/'
addition = 'kungsholmen,vasastan,gardet/115353,115349,115347'
url = base+addition
print(url)
notar = requests.get(url) # load the webpage content
page = notar.content # get the url content
soup = BeautifulSoup(page, 'lxml') # convert it to a beautiful soup object

links = soup.find_all('a', href=re.compile('/annons/'))

输出

<a class="elVgu" href="/annons/4387774" rel="noopener
noreferrer" target="_blank"><div class="_2x4yP _1Pdm1 nhG4K">
<div class="VvVg1"><picture><source sizes="(min-width: 460px)
959px, (min-width: 991px) 459px, 459px"
srcset="//bcdn.se/images/cache/27006816_796x0.webp 796w,
  //bcdn.se/images/cache/27006816_360x0.webp 360w,
  //bcdn.se/images/cache/27006816_270x0.webp 270w" type="image/webp"/><source sizes="(min-width: 460px) 959px, (min-width: 991px) 459px, 459px" srcset="//bcdn.se/images/cache/27006816_796x0.jpg 796w,
  //bcdn.se/images/cache/27006816_270x0.jpg 360w,
  //bcdn.se/images/cache/27006816_270x0.jpg 270w" type="image/jpeg"/><img alt="Öppnar information om bostaden i ny tab" class="TNXq2" loading="lazy" src="//bcdn.se/images/cache/27006816_270x0.jpg"/></picture>
<div class="_1Aa76"><p class="_1Csan">Balkong</p><p 
class="_1Csan">Eldstad</p></div></div><div class="_1bIS9"><h3
 class="_3R27q">Tomtebogatan 5B</h3></div><div class="_1bIS9">
<p class="_3HprD">4 895 000 kr</p></div><div class="_2ZDKS">
<div class="_2iD1Y"><div class="_1cru3 _2epd7"><div
 class="_1jUwL _36W0F _2MiJJ">Värdering</div><div class="MsC3E _36W0F _2MiJJ">5 470 000 kr</div><hr class="_2DJbA _2F2SG"/></div></div></div><div class="_3IN5U"><strong><p>Vasastan -
 Birkastan</p></strong><p>Lägenhet</p><p>2 rum</p><p>52 m²</p>
<p>931 kr/mån</p></div></div></a>

当我访问每个 HTML 块/每个公寓的文本时,文本就会出现,但它们都在一起,中间没有空格。每个公寓的单词都不同,短语的顺序也不同(特征在前,可能是 0-5 个特征,这使得排序方法无效),我希望能够保存名称、价格、特征等到一个表中。

输入

for nr_aps, row in enumerate(links):
    row.str
    info = row.text # show each apartment info
    print(info) 
    print('')

输出

BalkongEldstadTomtebogatan 5B4 895 000 krVärdering5 470 000 krVasastan - BirkastanLägenhet2 rum52 m²931 kr/mån

您知道如何将每个部分保存到表格中吗?谢谢!

【问题讨论】:

    标签: html web-scraping spacing


    【解决方案1】:

    您将所有公寓信息保存到一个变量“信息”中。

    如果您只想一次打印一个公寓,只需使用

    print(row.text)
    

    或者只是添加 \n 来换行

    info = row.text + "\n"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      相关资源
      最近更新 更多