我如何使用美丽的汤来获得Google财经上目前的股票价格?

时间:2015-06-10 16:45:02

标签: python web-scraping

我有以下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()字段中放置什么,以便我可以获得此特定股票的当前价格 。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

find()将允许您在HTML DOM中查找标记。例如,如果您想要网站的标题,您可以执行类似bs.find("title")的操作,它将返回标题的第一个实例。 (例如:<title>Some title here</title>)您还可以使用特定属性过滤标签。很多网站都有大量的div,但是如果你想要类型为red的div,你可以这样做:bs.find('div', attrs={'class': 'red'})。这将返回具有类类型div的第一个redRead 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']