python - 如何从 div 中仅获取姓名和联系电话?

标签 python selenium web-scraping

我试图从 div 获取姓名和联系电话,div 有三个跨度,但问题是有时 div 只有一个跨度,有时有两个跨度,有时有三个跨度。

  • 第一个跨度有名称。

  • 第二个范围有其他数据。

  • 第三个跨度有联系号码

Here is 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" 

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

最佳答案

您可以迭代抛出联系人并检查是否有子 a 元素以及是否匹配电话号码模式:

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"

输出:

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

该页面有验证码。要刮得更好用 ,所有信息均以json格式提供。

关于python - 如何从 div 中仅获取姓名和联系电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559962/

相关文章:

python - 获取一个国家的天气,地点 bs4

html - 从 Kickstarter 项目中抓取文本不会返回任何结果

python - 使用 Python 在方法中执行 execfile()

python - Pandas 中的分层组大小

python - django zip 不等列表

java - 如何解析 Guava 对 Selenium 的影响?

java - 如何在selenium java中找到复杂(父子)xpath

python - 如果任何列包含特定值,则在所述行中删除 Pandas Dataframe 中的一行

c# - 如何在 c# Selenium 中查找 reCAPTCHA 元素并单击它

python - 在Azure云上部署Python Web Scraping文件(函数应用程序)