我有几个简单的bs问题(1-3一起,4-6一起).假设我有如下结构的HTML:
<meta property="tall"/>
<meta property="wide" content="spiral"/>
<meta name="red"/>
<meta name="tall"/>property的所有实例"tall"和"wide"?property"tall"的所有实例name和property?"tall"?
我可以轻松地提取所有元实例:
Soup1.find_all(“元”)
但是,在此之后,我必须访问结果列表中的每个元素,然后才能得到像property和name这样的东西。但是,如果可能的话,我宁愿跳过这一步,直接获取property和name的所有实例。requests.get的网站上获得网址,而你必须点击底部的一个按钮才能使它加载更多,我想要额外的东西,我如何才能做到这一点呢?发布于 2014-05-24 06:27:11
我不是使用BeautifulSoup的专家,但我尝试了一下,下面是我想出来的,希望这足以让您开始工作。请注意,我可能会有更优雅的解决方案。
样板:
from bs4 import BeautifulSoup
import re
a = """<meta property="tall"/>
<meta property="wide" content="spiral"/>
<meta name="red"/>
<meta name="tall"/>"""
soup = BeautifulSoup(a)问题:
我。
p = soup.findAll('meta', attrs = {"property":re.compile('.*')})
>> [<meta property="tall"/>, <meta content="spiral" property="wide"/>]二、
ex = [p[i]['property'] for i in range(len(p))]
>> ['tall', 'wide']我不知道你是什么意思,也许它已经被覆盖了?
四.
alltall = soup.findAll('meta', attrs = {'name':'tall'})
alltall += (soup.findAll('meta', attrs = {'property':'tall'}))
>> [<meta name="tall"/>, <meta property="tall"/>]我花了一些时间去寻找,但没有找到一种优雅的方法来做这件事。也许我忽略了什么。
发布于 2014-05-24 06:48:32
Beautiful soup完全是在玩提取数据的游戏,但首先要做的是:
这里test.html是您发布的内容。它之所以有一个try, catch block,是因为如果查找操作失败了,那么它就不会打印错误,而是什么都不打印。
from bs4 import BeautifulSoup
soup = BeautifulSoup (open(r'd:\test.html','r'))
#print soup.prettify()
items = soup.findAll("meta")
try:
print "#How can I find all of the instances of property?"
for all_prop in items:
if all_prop['property']:
print all_prop
except:
print ""
try:
print "#How can I then extract tall and wide?"
for properties in items:
print(properties['property'])
except:
print ""
try:
print "#all of the instances of tall"
print soup.findAll('meta', attrs = {'property':'tall'})
print soup.findAll('meta', attrs = {'name':'tall'})
print ""
except:
print ""
try:
print "#How can I then extract tall?"
for just_tall in items:
if just_tall.get('property') == 'tall':
print just_tall.get('property')
if just_tall.get('name') == 'tall':
print just_tall.get('name')
except:
print ""输出:
#How can I find all of the instances of property?
<meta property="tall"/>
<meta content="spiral" property="wide"/>
#How can I then extract tall and wide?
tall
wide
#all of the instances of tall
[<meta property="tall"/>]
[<meta name="tall"/>]
#How can I then extract tall?
tall
tall休息都是在玩,但以上这些都会帮助你开始工作。有些问题仍然含糊不清,所以我给你举了上面的例子来帮助你。
教程和更多示例:链接到文档
https://stackoverflow.com/questions/23841424
复制相似问题