使用'.next_siblings'来截取元素之间的div之后,我无法管理拉文本

时间:2017-03-30 00:21:55

标签: python html beautifulsoup

我知道这个问题已被提出,但没有一个答案在我的案例中有效,我花了一整天时间试图从它们构建。我会在下面的代码中省略多次尝试&展示什么抓住了我需要的元素 从非描述琐事divs我想只是文本 如果您想检查元素,我正在抓取的网站链接如下 从第一个“汽水甚至”div开始,它抓住了两个“汽水甚至”和“汽水奇”div,直到它到达下一个h4元素的琐事模糊结束并停在我想要的地方(下面的代码)。

仅供参考:我可以使用BeautifulSoup从这些div中提取文本,但不能没有挖掘出我不想要的许多其他div。 div的数量从一个页面到另一个页面发生变化,我想制作适合其中任何一个的东西。

site = http://www.imdb.com/name/nm0424060/bio?ref_=nm_dyk_trv_sm

content = urllib.request.urlopen(site).read()

soup = BeautifulSoup(content, "html.parser")

for tag in soup.find("div",class_="soda even").next_siblings:
    if tag.name == "h4":
        break
    else:
        print (tag)

(在Python中)

1 个答案:

答案 0 :(得分:0)

我(这个问题的提问者)想出来了......
但我确信我做错了,因为它涉及重复格式化数据太多次,尽管它完成了工作。所以请哈利!

site = http://www.imdb.com/name/nm0424060/bio?ref_=nm_dyk_trv_sm

content = urllib.request.urlopen(site).read()

soup = BeautifulSoup(content, "html.parser")

vtg = u""
listo = []
for tag in soup.find("div",class_="soda even").next_siblings:
    if tag.name == "h4":
        break
    else:
        vtg += str(tag)

soup2 = BeautifulSoup(vtg, "html.parser")

q = []

#specify the elements with two more .findAll passes to weed out any href elements still in the soup

for i in soup2.findAll("div",class_="soda even"):
    q.append(i.text)

for k in soup2.findAll("div",class_="soda odd"):
    q.append(k.text)

for h in q:
    print (h)

我将.next_siblings for循环的输出存储为字符串然后我通过BeatifulSoup将其存储,(第二次通过BeautifulSoup传输数据)。
我能够循环遍历并应用.text函数 如果有更多的数据显示方式或者只是不同的方式,我很乐意看到你的帖子。

感谢您对我的问题竖起大拇指,好像这个问题很容易或之前发布过。