如何在元素中获取元素

时间:2019-03-12 16:10:45

标签: html python-3.x beautifulsoup

我正在网上抓取一个真实状态页面,并试图在excel表中获取名称,位置,价格等数据。这是获取该信息的代码:

soup = bs4.BeautifulSoup(driver.page_source,'lxml')
for price in soup.find_all('span',{"class":"ann-price"}):
    price_list.append(price.text)
for name in soup.find_all('div',{"itemprop":"name"}):
    name_list.append(name.text)
for meters in soup.find_all('div',{"class":"ann-box-info"}):
    meters_list.append(meters.text)
for rooms in soup.find_all('div',{"class":"ann-box-info"}):
    bedrooms_list.append(rooms.text)
for location in soup.find_all('span',{"class":"ann-info-item"}):
    location_list.append(location.text)
for realtor in soup.find_all('span',{"class":"company-name"}):
    realtor_list.append(realtor.text)

问题:

  1. 大多数报价在div.ann-box-contact中的公司名称为span.company-name。问题是,每当特价商品出现而没有div.ann-box-contact(因此没有公司名称),而不是将其留空时,它就会输出下一个商品的名称,这会损害excel的格式。 li>

  2. 是否可以通过在div.ann-box-contact内查找span.company-name 来过滤那些报价?

以下是页面的代码,其中公司名称和联系人框为:

<div class="ann-box-contact">
<div class="info">
  <span class="company-photo">
    <span class="user-avatar"></span>
  </span>
  *<span class="company-name">*
    <br>

星号中的元素是我想要获取的元素,但具体来说,请在div.ann-box-contact内部查找它,以便忽略没有公司名称的任何报价。

1 个答案:

答案 0 :(得分:1)

您可以先找到<div class="ann-box-contact">,然后在内部进行搜索以找到<span class="company-name">的{​​{1}}

类似这样的东西:

beautifulsoup