Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除<;部门>;及<;ahref>;靓汤_Python_Html_Beautifulsoup - Fatal编程技术网

Python 删除<;部门>;及<;ahref>;靓汤

Python 删除<;部门>;及<;ahref>;靓汤,python,html,beautifulsoup,Python,Html,Beautifulsoup,我有一段代码来解析网页。我想删除,div,ahref,h1之间的所有内容 opener = urllib2.build_opener() opener.addheaders = [('User-agent', 'Mozilla/5.0')] url = "http://en.wikipedia.org/wiki/Viscosity" try: ourUrl = opener.open(url).read() except Exception,err: pass soup = Beauti

我有一段代码来解析网页。我想删除,div,ahref,h1之间的所有内容

opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
url = "http://en.wikipedia.org/wiki/Viscosity"
try:
  ourUrl = opener.open(url).read()
except Exception,err:
  pass
soup = BeautifulSoup(ourUrl)                
dem = soup.findAll('p')     

for i in dem:
  print i.text

我想打印h1和ahref之间没有任何内容的文本,就像我上面提到的。

编辑:来自注释“我想返回不在任何
标记之间的文本。”。这应该去掉父项具有div标记的所有块:

raw = '''
<html>
Text <div> Avoid this </div>
<p> Nested <div> Don't get me either </div> </p>
</html>
'''

def check_for_div_parent(mark):
    mark = mark.parent
    if 'div' == mark.name:
        return True
    if 'html' == mark.name:
        return False
    return check_for_div_parent(mark)

soup = bs4.BeautifulSoup(raw)

for text in soup.findAll(text=True):
    if not check_for_div_parent(text):
        print text.strip()
原始响应

不清楚你到底想做什么。首先,您应该尝试发布一个完整的工作示例,因为您似乎缺少标题。其次,维基百科似乎反对“机器人”或自动下载程序

这可以通过以下代码行来避免

import urllib2, bs4

url = r"http://en.wikipedia.org/wiki/Viscosity"

req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"}) 
con = urllib2.urlopen( req )
现在我们有了这个页面,我想您只需要使用
bs4
提取主要文本。我会这样做

soup = bs4.BeautifulSoup(con.read())
start_pos = soup.find('h1').parent

for p in start_pos.findAll('p'):
    para = ''.join([text for text in p.findAll(text=True)])
    print para
这使我看到如下文本:

流体的粘度是衡量其抵抗剪切应力或拉伸应力逐渐变形的能力。对于液体,它对应于非正式的“厚度”概念。例如,蜂蜜的粘度比水高 粘度是由于以不同速度运动的相邻流体包裹之间的摩擦造成的。当流体被迫通过管道时,流体通常在轴附近移动得更快,在管壁附近移动得非常缓慢,因此需要一些应力(如管道两端之间的压差)来克服层间摩擦并保持流体移动。对于相同的速度模式,所需的应力与流体的粘度成正比。液体的粘度取决于其颗粒的大小和形状以及颗粒之间的吸引力


编辑:来自注释“我想返回不在任何
标记之间的文本。”。这应该去掉父项具有div标记的所有块:

raw = '''
<html>
Text <div> Avoid this </div>
<p> Nested <div> Don't get me either </div> </p>
</html>
'''

def check_for_div_parent(mark):
    mark = mark.parent
    if 'div' == mark.name:
        return True
    if 'html' == mark.name:
        return False
    return check_for_div_parent(mark)

soup = bs4.BeautifulSoup(raw)

for text in soup.findAll(text=True):
    if not check_for_div_parent(text):
        print text.strip()
原始响应

不清楚你到底想做什么。首先,您应该尝试发布一个完整的工作示例,因为您似乎缺少标题。其次,维基百科似乎反对“机器人”或自动下载程序

这可以通过以下代码行来避免

import urllib2, bs4

url = r"http://en.wikipedia.org/wiki/Viscosity"

req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"}) 
con = urllib2.urlopen( req )
现在我们有了这个页面,我想您只需要使用
bs4
提取主要文本。我会这样做

soup = bs4.BeautifulSoup(con.read())
start_pos = soup.find('h1').parent

for p in start_pos.findAll('p'):
    para = ''.join([text for text in p.findAll(text=True)])
    print para
这使我看到如下文本:

流体的粘度是衡量其抵抗剪切应力或拉伸应力逐渐变形的能力。对于液体,它对应于非正式的“厚度”概念。例如,蜂蜜的粘度比水高 粘度是由于以不同速度运动的相邻流体包裹之间的摩擦造成的。当流体被迫通过管道时,流体通常在轴附近移动得更快,在管壁附近移动得非常缓慢,因此需要一些应力(如管道两端之间的压差)来克服层间摩擦并保持流体移动。对于相同的速度模式,所需的应力与流体的粘度成正比。液体的粘度取决于其颗粒的大小和形状以及颗粒之间的吸引力


好的,链接可以是任何网站。我想返回不在任何和标记之间的文本。说“粘度是由于相邻流体包之间以不同速度移动的摩擦造成的。”是在div标签之间。@user2707082我已根据您的回答更新了答案。您好,yourd代码很好,但我必须检查每个段落,它拒绝所有段落,因为所有段落都有。你可以修改代码,只转换和评论。好的链接可以是任何网站。我想返回不在任何和标记之间的文本。说“粘度是由于相邻流体包之间以不同速度移动的摩擦造成的。”是在div标签之间。@user2707082我已根据您的回答更新了答案。您好,yourd代码很好,但我必须检查每个段落,它拒绝所有段落,因为所有段落都有。你能修改代码,只转换成注释吗。