如何在使用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中没有任何内容?我没有尝试过。你能自己检查一下吗?