【问题标题】:cant get the text content of a table lxml python无法获取表格lxml python的文本内容
【发布时间】:2015-09-03 12:15:39
【问题描述】:

我试图取消彩票的结果,最终目标是从彩票上的 5 位数字中获得最常见的 3 位数字。我使用 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

现在我真的没有任何想法:(。有人可以给出一个想法吗?

【问题讨论】:

    标签: python web-scraping lxml


    【解决方案1】:

    该页面的彩票结果内容不存在于静态 HTML 中,它是使用 Javascript 动态生成/检索的(我认为是 JQuery)。因此,您将无法使用静态 HTML 解析器(例如 lxml.html)从页面中删除e数字。

    四处寻找其他方法,也许Selenium 可能有用。

    【讨论】:

    • 是的,我虽然在硒中,但试图不使用它。感谢您的帮助
    • 也许您可以分析 javascript(我认为它使用 Ajax 调用),然后直接向这些相同的 URL 发出 HTTP 请求。
    猜你喜欢
    • 2021-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多