我在使用Python进行网页抓取时出现问题

时间:2017-12-15 23:37:08

标签: python html web screen-scraping

我对编码非常陌生,我试图编写一个从coinmarketcap输入当前Litecoin价格的代码。但是,我无法让它工作,打印并清空列表。

import urllib
import re

htmlfile = urllib.urlopen('https://coinmarketcap.com/currencies/litecoin/')

htmltext = htmlfile.read()

regex = 'span class="text-large2" data-currency-value="">$304.08</span>'

pattern = re.compile(regex)

price = re.findall(pattern, htmltext)

print(price)

Out come&#34; []&#34; 。问题可能很小,但我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

正则表达式通常不是处理HTML的最佳工具。我建议看一下像BeautifulSoup这样的东西。

例如:

import urllib
import bs4

f = urllib.urlopen("https://coinmarketcap.com/currencies/litecoin/")
soup = bs4.BeautifulSoup(f)
print(soup.find("", {"data-currency-value": True}).text)

目前打印“299.97”。

对于这个简单的情况,这可能不如使用re那样好。但是,请参阅Using regular expressions to parse HTML: why not?

答案 1 :(得分:0)

您需要更改RegEx并在括号中添加一组以捕获值。

尝试匹配以下内容:<span class="text-large2" data-currency-value>300.59</span>,您需要此RegEx:

regex = 'span class="text-large2" data-currency-value>(.*?)</span>'

(.*?)组用于记录号码。

你得到:

['300.59']