我是Python新手,实际上我正在编写一个小Python脚本,它请求并读取URL的HTML。
有关信息,我正在研究的网页是http://bitcoinity.org/markets,
我想用我的剧本来获得当前的市场价格。
我检查了HTML代码,发现价格在一个应答器中:

<span id="last_price" value="447.77"</span>

下面是我的Python脚本的代码:
import urllib2
import urllib
from bs4 import BeautifulSoup
url = "http://bitcoinity.org/markets"
values = {'name' : 'Michael Foord',
      'location' : 'Northampton',
      'language' : 'Python' }
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
HTML = urllib2.urlopen(req)
soup = BeautifulSoup(HTML)
HTMLText = HTML.read()
HTML.close()
#print soup.prettify()
#print HTMLText

所以问题是这个脚本的输出(使用两个方法BeautifulSoup and read())如下:
</span>
<span id="last_price">
</span>

“value=”属性丢失,语法更改,因此我不知道服务器是否不允许我对此值进行请求,或者我的代码是否有问题。
欢迎大家帮忙!:)
(对不起,我的英语不好,我不是本地人)

最佳答案

价格是通过一组javascript函数计算的,在这种情况下,urllib2+BeautifulSoup方法不起作用。
考虑使用一个使用真正浏览器的工具,如selenium

>>> from selenium import webdriver
>>> driver = webdriver.Firefox()
>>> driver.get('http://bitcoinity.org/markets')
>>> driver.find_element_by_id('last_price').text
u'0.448'

关于python - Python HTML请求中缺少属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23748983/

10-12 18:02
查看更多