我如何使用 lxml xpath 从网络抓取数据中获取特定元素
How can i use lxml xpath to get specific element from web scraping data
我按照下面的 link 从 Prize Zombie 抓取了历史数据:
我的脚本如下:
import requests
import pandas as pd
import sys
import csv
import urllib2
import sys
import time
from bs4 import BeautifulSoup
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
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 = 'https://www.pricezombie.com/viewproduct/pF/5jNvj/Align-Probiotic-Supplement-42-count'
r = Render(url)
result = r.frame.toHtml()
formatted_result = str(result.toAscii())
tree = html.fromstring(formatted_result)
按照作者的说法,现在我需要使用xpath来获取我想要的元素。
但是,我真的不知道如何从树中获取这些特定元素。
html 部分应如下所示:
class="pt1">.51, May 15 - Jun 10
而我需要的信息是:
<g class="pzmo">
<rect x="91" y="14" height="216" width="7" style="fill:#ccc" fill-opacity="0.2"></rect>
<rect fill-opacity="0.9" class="prec" x="98" y="14" width="170" height="20"></rect>
<text x="103" y="28" class="pt1">.51, May 15 - Jun 10</text>
</g>
谁能告诉我它的 xpath 是什么?
xpath 是,例如:
//*[@id="chart3Dqt"]/svg/g[412]/text[1]
如果您想改变索引,您可以用格式化字段代替:
>>> xpath = '//*[@id="chart3Dqt"]/svg/g[{index}]/text[1]'
>>> xpath.format(index=412)
//*[@id="chart3Dqt"]/svg/g[412]/text[1]
我按照下面的 link 从 Prize Zombie 抓取了历史数据:
我的脚本如下:
import requests
import pandas as pd
import sys
import csv
import urllib2
import sys
import time
from bs4 import BeautifulSoup
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
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 = 'https://www.pricezombie.com/viewproduct/pF/5jNvj/Align-Probiotic-Supplement-42-count'
r = Render(url)
result = r.frame.toHtml()
formatted_result = str(result.toAscii())
tree = html.fromstring(formatted_result)
按照作者的说法,现在我需要使用xpath来获取我想要的元素。
但是,我真的不知道如何从树中获取这些特定元素。
html 部分应如下所示:
class="pt1">.51, May 15 - Jun 10
而我需要的信息是:
<g class="pzmo">
<rect x="91" y="14" height="216" width="7" style="fill:#ccc" fill-opacity="0.2"></rect>
<rect fill-opacity="0.9" class="prec" x="98" y="14" width="170" height="20"></rect>
<text x="103" y="28" class="pt1">.51, May 15 - Jun 10</text>
</g>
谁能告诉我它的 xpath 是什么?
xpath 是,例如:
//*[@id="chart3Dqt"]/svg/g[412]/text[1]
如果您想改变索引,您可以用格式化字段代替:
>>> xpath = '//*[@id="chart3Dqt"]/svg/g[{index}]/text[1]'
>>> xpath.format(index=412)
//*[@id="chart3Dqt"]/svg/g[412]/text[1]