【发布时间】:2014-10-30 18:13:56
【问题描述】:
我正在尝试从 yahoo Finance 检索股票信息。我已经弄清楚如何使用 re.findall 将价格放入列表中。如果股票代码/价格不存在,我找到了一种方法来检索它,说['没有这样的股票代码']。我的问题是我需要按顺序在同一个列表中找到价格和没有这样的票号。到目前为止,这是我的代码。是否可以在 findall() 中有两种模式,以便将它们都放入一个列表中?
import urllib.request
import re
li = [i.strip().split() for i in open("Portfolio.txt").readlines()]
li[0:26] =[]
li = [x for x in li if x]
li.sort()
def retrieve_page(url):
my_socket = urllib.request.urlopen(url)
dta = str(my_socket.readall())
my_socket.close()
price = re.findall((r'<td class="col-price cell-raw:(.*?)"><span'), dta)
noprice = re.findall(r'<span class ="no-symbol">(.*?):<strong>', dta)
print(price)
print(noprice)
retrieve_page("http://finance.yahoo.com/quotes/AAPL,GOOG,HWP,IBM,MSFT")
我的输出如下
['107.120003', '552.25', '164.478699', '46.0938']
['No such ticker symbol']
【问题讨论】:
-
你可以用
|链接这两个表达式。 -
喜欢这个?因为我在执行此操作时出现错误 price = re.findall((r'
(.*?): ') , dta) 这正是您的实际程序,复制粘贴到位吗?或者它几乎完全是你的程序,也许是重新输入的?因为当我运行 那个 程序时,我没有得到你描述的输出。不要用re,用beautifulsoup解析html
标签: python web-scraping beautifulsoup findall