Python美丽的汤从父母获取孩子

时间:2017-06-11 15:11:46

标签: python web-scraping beautifulsoup

我知道如何从孩子那里得到父母,但我如何从父母那里得到孩子:

aaa = soup.findAll(string=re.compile('Last 30 days'))
Views = aaa[0].findParent().text

以上是我的父母。但如果我这样做:

aaa = soup.findAll(string=re.compile('Last 30 days'))
Views = aaa[0].findChild().text

它不起作用并出现错误' NavigableString'对象没有属性" findChild。 任何帮助将不胜感激,谢谢

1 个答案:

答案 0 :(得分:0)

div过滤掉必要的class = sidebar sbt。使用get_text()获取每个div的文本,并检查此div是否包含您的必要信息。然后查找p以排除不必要的texts,使用get_text()并删除多余的空格和新行。按空格分割字符串并获取列表中的3个元素列表。再次加入以获得所需的string

N.B:可能有更简单的方法来处理string

import requests
from bs4 import BeautifulSoup

url = "http://www.zoopla.co.uk/for-sale/details/44118383?search_identifier=e31406ce57c4397baa6701b11e7cdab1"

html = requests.get(url)
soup = BeautifulSoup(html.text, "lxml")

divs = soup.find_all("div", class_="sidebar sbt")

for div in divs:
    text = div.get_text().lower()
    if(text.find("first listed") > -1):
        text = div.find("p").get_text()
        text = text.replace("\n","",10)
        text = text.strip()
        text_list = text.split()[-3:]
        text = " ".join(text_list)
        print(text)
        break

如果您需要First Listed零件的全部string,请避免拆分和加入。