我有以下python代码,目标是获得该股票的当前价格,即110.80美元。
persistence.xml
现在当我打印import urlparse
import urllib2
import pdb
from bs4 import BeautifulSoup
from pprint import pprint
url = "https://www.google.com.hk/finance?q=0001&ei=yF14VYC4F4Wd0ASb64CoCw"
def WebCrawl(url):
htmltext = urllib2.urlopen(url).read()
soup = BeautifulSoup(htmltext)
P = soup.find()
print P
WebCrawl(url)
时,数字110.80实际上出现在多个地方,例如:
soup
和
{u:"/finance?q=HKG:0001",name:"0001",cp:"-1.07",p:"110.80",cid:"164573760542896"}
和
<span id="ref_164573760542896_l">110.80</span>
第一个问题:在html文本中查找此股票当前价格的正确位置是什么,因为看起来价格出现在html文本中的多个区域?
第二个问题:我应该在<meta content="110.80" itemprop="price"/>
或soup.find()
字段中放置什么,以便我可以获得此特定股票的当前价格 。有人可以帮帮我吗?
答案 0 :(得分:1)
find()
将允许您在HTML DOM中查找标记。例如,如果您想要网站的标题,您可以执行类似bs.find("title")
的操作,它将返回标题的第一个实例。 (例如:<title>Some title here</title>
)您还可以使用特定属性过滤标签。很多网站都有大量的div,但是如果你想要类型为red
的div,你可以这样做:bs.find('div', attrs={'class': 'red'})
。这将返回具有类类型div
的第一个red
。 Read the documentation for more detail.
对于此示例,您可以执行以下操作来获取股票价格:
import urllib2
from bs4 import BeautifulSoup
url = "https://www.google.com.hk/finance?q=0001&ei=yF14VYC4F4Wd0ASb64CoCw"
def WebCrawl(url):
htmltext = urllib2.urlopen(url).read()
soup = BeautifulSoup(htmltext)
p = soup.find("span", attrs={"id": "ref_164573760542896_l"}).text
print p
WebCrawl(url)
您可以执行元标记:
p = soup.find("meta", attrs={"itemprop": "price"})
print p['content']