我怎样才能从div获得姓名和联系电话?

问题描述 投票:1回答:2

我试图从div获得名称和联系号码,div有三个跨度,但问题是有时div只有一个跨度,有时是两个,有时是三个跨度。

  • 第一个跨度有名字。
  • 第二个跨度有其他数据。
  • 第三个跨度有联系号码

这是HTML

<div class="ds-body-small" id="yui_3_18_1_1_1554645615890_3864">
 <span class="listing-field" id="yui_3_18_1_1_1554645615890_3863">beth 
 budinich</span>
 <span class="listing-field"><a href="http://Www.redfin.com" 
 target="_blank">See listing website</a></span>
 <span class="listing-field" id="yui_3_18_1_1_1554645615890_4443">(206) 
 793-8336</span>
</div>

这是我的代码

try:
  name= browser.find_element_by_xpath("//span[@class='listing-field'][1]")
  name = name.text.strip()
  print("name : " + name)
except:
  print("Name are missing")
  name = "N/A"

try:
  contact_info= browser.find_element_by_xpath("//span[@class='listing- 
  field'][3]")
  contact_info = contact_info.text.strip()
  print("contact info : " + contact_info)
except:
  print("contact_info are missing")
  days = "N/A" 

我的代码没有给我正确的结果。谁能为我提供最好的解决方案。谢谢

python selenium web-scraping
2个回答
3
投票

您可以迭代联系人并检查,如果有孩子qazxsw poi元素和如果匹配电话号码模式:

a

输出:

contact_name:['Kevin Howard','Howard enterprise'] contact_phone:'(206)334-8414'

该页面有验证码。为了更好地使用contacts = browser.find_elements_by_css_selector("span.listing-field") contact_name = [] contact_phone = "N/A" contact_web = "N/A" for i in range(0, len(contacts)): if len(contacts[i].find_elements_by_tag_name("a")) > 0: contact_web = contacts[i].find_element_by_tag_name("a").get_attribute("href") elif re.search("\\(\\d+\\)\\s+\\d+-\\d+", contacts[i].text): contact_phone = contacts[i].text else: contact_name.append(contacts[i].text) contact_name = ", ".join(contact_name) if len(contact_name) > 0 else "N/A" ,所有信息都以json格式提供。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.