我试图废弃乐透的结果,最后的目标是获得最常见的3位数,来自乐透的5位数字。我使用lxml与python来获取数字,但我不能打印实际数字,o得到xpath并尝试使用/ text()但由于某种原因我不断得到一个空列表。这就是我用来获取数字。有什么建议?抱歉英文不好。
from lxml import html
import requests
page=requests.get('http://www.loteriadecordoba.com.ar/juegos/index/Loter%C3%ADa+de+C%C3%B3rdoba-18.html')
tree = html.fromstring(page.text)
numero= tree.xpath('/html/body/div[3]/div[1]/div/div[1]/div[1]/div/div[4]/div/div/table/tbody/tr[3]/td/table/tbody/tr[2]/td[3]/text()')
print numero
经过多次阅读后,我最终得到了这个
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
import time
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
url = 'http://www.loteriadecordoba.com.ar/contenidos/juegos/0-132.html?xSorteo='
for x in range(4523 , 4525):
url2=url+str(x)
r = Render(url2)
time.sleep(5)
result = r.frame.toHtml()
#Converting QString to Ascii for lxml to process
formatted_result = str(result.toAscii())
tree = html.fromstring(formatted_result)
num= tree.xpath('//div[@class="sorteo"]/table/tbody/tr[3]/td/table/tbody/tr[2]/td/text()')
num2= tree.xpath('//div[@class="sorteo"]/table/tbody/tr[4]/td/table/tbody/tr/td/text()')
lista = num+num2
sorteo =open('sorteo', 'w')
for item in lista:
sorteo.write("%s\n" % item)
sorteo.close()
我使用pyQt4渲染页面用于读取数字,它在单个页面上运行完美,但是当我在for循环中运行它时会不断崩溃并发布错误
X Error: RenderBadGlyphSet (invalid GlyphSet parameter) 145
Extension: 139 (RENDER)
Minor opcode: 19 (RenderFreeGlyphSet)
Resource id: 0x4800009
现在我真的不知道:(。有人可以提出想法吗?
答案 0 :(得分:0)
该页面的抽奖结果内容不存在于静态HTML中,它是使用Javascript(我认为是JQuery)动态生成/检索的。因此,您无法使用lxml.html
等静态HTML解析器从页面中删除 e 数字。
搜索另一种方法,或许Selenium可能有用。