我想在多个div中的嵌套元素中删除文本

时间:2015-12-23 07:19:35

标签: python html web-scraping beautifulsoup web-crawler

对python3使用BeautifulSoup4我想在div中的嵌套元素中删除文本。但首先,我想提取嵌套在div中的元素中的链接。

我如何抓取链接LINK-I-WANT.COM和图片IMAGE-I-WANT.JPG嵌套在这样的内容中:

<section class="LINK_CLASS">
    <div class="LINK_CLASS2">
        <div class="LINK_CLASS3">
            <span class="#">random text</span>
            <a href="LINK-I-WANT.COM">
                <img  src="IMAGE-I-WANT.JPG" class="IMG_CLASS"/>
            </a>
        </div>
    </div>
</section>

然后将所有被抓取的链接保存到列表中,脚本将遍历每个链接并找到一些很长的行:

<div class=“CLASS_ONE”>
    <div class=“CLASS_TWO”>
      <ul>
        <li><span>FOO</span>BAR</li>
        <li><span>FOO2</span>BAR2</li>
        <li><span>FOO3</span>BAR3</li>
        <li><span>FOO4</span>BAR4</li>
      </ul>
    </div>
</div>

使用上面的示例,我将如何访问FOO#BAR#,这样当我遍历每个链接并找到每个页面的信息时(FOO#&amp; BAR#),我可以将其打印到生成的文本文件中,用于每个链接吗?

如果我没有意义,请原谅我。这是我对代码的尝试,我将非常感谢任何帮助。

def spider(max_pages):
    page = 1
    subs = []
    print("Getting links...")
    while page <= max_pages:
        url = "http://example.com" 
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")
        for link in soup.findAll("section",{"class":"LINK_CLASS"}):

这是我被卡住的部分...如果<a>标签有一个类,这会容易得多,不幸的是,<a>标签只有一个href,所以我有尝试通过指向其他元素来访问它。我不知道如何在元素中寻找元素,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,有多种方法可以找到所需的链接。我会做一个CSS selector

for link in soup.select("section.LINK_CLASS > div.LINK_CLASS2 > div.LINK_CLASS3 > a[href]"):
    print(link["href"])

.将检查是否存在类,>是直接的父子关系检查。换句话说,我们正在找到位于a元素正下方href属性的div元素,其中LINK_CLASS3类位于div元素的正下方LINK_CLASS2类直接位于具有section类的LINK_CLASS元素内。