从网站获取数据值以便我可以使用它们的最简单方法是什么? 因此,我们通过以下方式获取页面源数据的简单方法:
usock = urllib2.urlopen("WEBSITE URL")
data = usock.read()
usock.close()
print data
在我们抓取并打印的页面数据中,有两行我们感兴趣。
<input type="hidden" name="SECRETCODE" value="l53DLeOfj1" />
<input type="hidden" name="NotSoSecretCode" value="Nr4MNjyK" />
如果我知道我正在寻找的值的名称是什么,那么获取值的最佳方法是什么,以便我可以将它们放在我自己的变量中并进一步使用它们?
答案 0 :(得分:1)
BeautifulSoup将是您最简单的解决方案。
html = '''
<input type="hidden" name="SECRETCODE" value="l53DLeOfj1" />
<input type="hidden" name="NotSoSecretCode" value="Nr4MNjyK" />
'''
soup = BeautifulSoup(html)
print soup.find("input", {"name":"SECRETCODE"})
print soup.find("input", {"name":"NotSoSecretCode"})
如果您手上有很多次,也可能想要使用繁琐的正则表达式!
答案 1 :(得分:0)
答案 2 :(得分:0)
如果你可以使用pyparsing那么
from pyparsing import Literal, Suppress, removeQuotes, dblQuotedString
def cleanQuotedString(name):
return dblQuotedString.setParseAction(removeQuotes).setResultsName(name)
def extractTokens(inputStream):
head = Suppress(Literal('<input'))
tail = Suppress(Literal('/>'))
equalSign = Suppress(Literal('='))
typekey = Suppress(Literal('type')) + equalSign + cleanQuotedString('type')
namekey = Suppress(Literal('name')) + equalSign + cleanQuotedString('name')
valueKey = Suppress(Literal('value')) + equalSign + cleanQuotedString('value')
grammar = head + typekey + namekey + valueKey + tail
return grammar.scanString(inputStream)
usock = urllib2.urlopen("WEBSITE URL")
tokens = extractTokens(usock.read())
usock.close()
for item, _, _ in tokens:
print("Element with type =", item.type, ", name = ", item.name, ", value = ", item.value)