正则表达式Python 3.4
我目前正在启动一个web scraper,我已经有一段时间没有使用python了。我肯定我也有乱七八糟的代码。哦,好吧正则表达式Python 3.4,python,regex,Python,Regex,我目前正在启动一个web scraper,我已经有一段时间没有使用python了。我肯定我也有乱七八糟的代码。哦,好吧 def retrieveHTML(): import re import urllib.request from urllib.request import urlopen urls = ["http://finance.yahoo.com/q?s=^dji", "http://finance.yahoo.com/q?s=^gspc"] i = 0 while i <
def retrieveHTML():
import re
import urllib.request
from urllib.request import urlopen
urls = ["http://finance.yahoo.com/q?s=^dji", "http://finance.yahoo.com/q?s=^gspc"]
i = 0
while i < len(urls):
htmlfile = urllib.request.urlopen(urls[i])
htmltext = htmlfile.read()
if (i == 0):
regex = b'<span id="yfs_110_^dji">(.+?)</span>'
if (i == 1):
regex = b'<span id="yfs_110_^gspc">(.+?)</span>'
pattern = re.compile(regex)
price = pattern.match(htmltext)
print (price)
i += 1
retrieveHTML()
def retrieveHTML():
进口稀土
导入urllib.request
从urllib.request导入urlopen
URL=[”http://finance.yahoo.com/q?s=^dji“http://finance.yahoo.com/q?s=^gspc“]
i=0
而i
正则表达式用于查找股票价格,并返回“无”。您可以通过检查页面顶部的large price元素来找到定义为正则表达式的html,以防出现任何歧义。字符
^
在正则表达式中具有特殊意义-具体地说,它匹配一行的开头,这似乎不是您想要的。为了匹配实际字符,您必须对其进行转义:
if (i == 0):
regex = b'<span id="yfs_110_\\^dji">(.+?)</span>'
if (i == 1):
regex = b'<span id="yfs_110_\\^gspc">(.+?)</span>'
如果(i==0):
正则表达式=b'(.+?)'
如果(i==1):
正则表达式=b'(.+?)'
字符^
在正则表达式中具有特殊含义-具体来说,它匹配一行的开头,这似乎不是您想要的。为了匹配实际字符,您必须对其进行转义:
if (i == 0):
regex = b'<span id="yfs_110_\\^dji">(.+?)</span>'
if (i == 1):
regex = b'<span id="yfs_110_\\^gspc">(.+?)</span>'
如果(i==0):
正则表达式=b'(.+?)'
如果(i==1):
正则表达式=b'(.+?)'
字符^
在正则表达式中具有特殊含义-具体来说,它匹配一行的开头,这似乎不是您想要的。为了匹配实际字符,您必须对其进行转义:
if (i == 0):
regex = b'<span id="yfs_110_\\^dji">(.+?)</span>'
if (i == 1):
regex = b'<span id="yfs_110_\\^gspc">(.+?)</span>'
如果(i==0):
正则表达式=b'(.+?)'
如果(i==1):
正则表达式=b'(.+?)'
字符^
在正则表达式中具有特殊含义-具体来说,它匹配一行的开头,这似乎不是您想要的。为了匹配实际字符,您必须对其进行转义:
if (i == 0):
regex = b'<span id="yfs_110_\\^dji">(.+?)</span>'
if (i == 1):
regex = b'<span id="yfs_110_\\^gspc">(.+?)</span>'
如果(i==0):
正则表达式=b'(.+?)'
如果(i==1):
正则表达式=b'(.+?)'
我知道它离题了,:)
我建议OP在xml包中使用xpath。我也搜刮雅虎这样的网站。xml包为我节省了很多时间和精力。通过正则表达式做任何事情都是一件令人头疼的事。我知道这是离题的,:)
我建议OP在xml包中使用xpath。我也搜刮雅虎这样的网站。xml包为我节省了很多时间和精力。通过正则表达式做任何事情都是一件令人头疼的事。我知道这是离题的,:)
我建议OP在xml包中使用xpath。我也搜刮雅虎这样的网站。xml包为我节省了很多时间和精力。通过正则表达式做任何事情都是一件令人头疼的事。我知道这是离题的,:)
我建议OP在xml包中使用xpath。我也搜刮雅虎这样的网站。xml包为我节省了很多时间和精力。通过正则表达式做任何事情都是一件令人头疼的事。不看HTML:
^
在正则表达式中表示字符串的开头。你可能需要逃避它。另外,请注意,默认情况下,
与换行符不匹配。你需要设置你应该真正使用yahoo finance API而不是删除他们的HTML页面。不要使用regex来解析HTML,而是使用BeautifulSoup或其他xml解析器。不看HTML:^
在regex中表示字符串的开头。你可能需要逃避它。另外,请注意,默认情况下,
与换行符不匹配。你需要设置你应该真正使用yahoo finance API而不是删除他们的HTML页面。不要使用regex来解析HTML,而是使用BeautifulSoup或其他xml解析器。不看HTML:^
在regex中表示字符串的开头。你可能需要逃避它。另外,请注意,默认情况下,
与换行符不匹配。你需要设置你应该真正使用yahoo finance API而不是删除他们的HTML页面。不要使用regex来解析HTML,而是使用BeautifulSoup或其他xml解析器。不看HTML:^
在regex中表示字符串的开头。你可能需要逃避它。另外,请注意,默认情况下,
与换行符不匹配。你需要设置你应该真正使用yahoo finance API而不是删除他们的HTML页面。不要使用正则表达式来解析HTML,而是使用BeautifulSoup或其他xml解析器。好的建议,快速获得50rep以便你可以评论:)好的建议,快速获得50rep以便你可以评论:)好的建议,快速获得50个代表,这样你就可以发表评论:)好建议,快速获得50个代表,这样你就可以发表评论:)