如何在使用Python进行抓取时去掉特定的div标记?

如何在使用Python进行抓取时去掉特定的div标记?,python,html,web-scraping,Python,Html,Web Scraping,标记结构如下所示 <div class="a"> <div class="b"></div> <div class="c"></div> Text... </div> 文本。。。 我想要a级除掉b级和c级除名 我该怎么做呢?你可以用汤。查找: filtered_divs = soup.find_all("div", {"

标记结构如下所示

<div class="a">
  <div class="b"></div>
  <div class="c"></div>
  Text...
</div>

文本。。。
我想要a级除掉b级和c级除名


我该怎么做呢?

你可以用汤。查找:

filtered_divs = soup.find_all("div", {"class": "a"})
使用表达式解析xml并使用表达式选择所需的文本节点可能是这里的最佳解决方案,并根据需要结合一些Python字符串操作。在iPython演示:

In [1]: from lxml import etree

In [2]: str = '''<div class="a">
   ...:   <div class="b">Unwanted</div>
   ...:   <div class="c">Unwanted</div>
   ...:   Text...
   ...: </div>'''

In [3]: root = etree.fromstring(str)

In [4]: root.xpath("//div[@class='a']/text()")
Out[4]: ['\n  ', '\n  ', '\n  Text...\n']

In [5]: ''.join(root.xpath("//div[@class='a']/text()")).strip()
Out[5]: 'Text...'
[1]中的
:来自lxml导入etree
在[2]中:str=''
…:不需要的
…:不需要的
…:文本。。。
...: '''
在[3]中:root=etree.fromstring(str)
[4]中的root.xpath(“//div[@class='a']/text()”)
输出[4]:['\n','\n','\n文本…\n']
在[5]:“”.join(root.xpath(“//div[@class='a']/text()”).strip()
Out[5]:“文本…”

谢谢您的回答。它是否只在嵌套的类b、c div下面刮取文本,而在类b和c中没有任何内容?我没有尝试过。你能自己检查一下吗?