Я пробовал соскабливать сайт javascript, используя два инструмента, оба не работали. Ссылка сайта: http://xx.xxx.com/category-499399872.htm Соответствующий текст, который я пытаюсь извлечь это GY-68 ...:Javascript веб-сайт соскабливание с использованием инструментов WebKit и Selenium
<div class="item3line1">
<dl class="item " data-id="38952795780">
<dt class="photo">
<a target="_blank" href="//item.xxx.com/item.htm?spm=a1z10.5-c.w4002-6778075404.11.54MDOI&id=38952795780" data-spm-wangpu-module-id="4002-6778075404" data-spm-anchor-id="a1z10.5-c.w4002-6778075404.11">
<img src="//img.xxx.com/bao/uploaded/i4/TB1HMt3FFXXXXaFaVXXXXXXXXXX_!!0-item_pic.jpg_240x240.jpg" alt="GY-68 BMP180 新款 BOSCH温度 气压传感器模块 代替BMP085"></img>
</a>
</dt>
Я пытаюсь соответствовать классу = «пункт» бит в качестве предварительного предприятие:
from pyvirtualdisplay import Display
from selenium import webdriver
import time
display = Display(visible=0, size=(800, 600))
display.start()
browser = webdriver.Firefox()
browser.get('http://xxxx.com/category-499399872.htm')
print browser.title
time.sleep(120)
content = browser.find_element_by_class_name('item ')
print content
browser.quit()
display.stop()
я получаю:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"class name","selector":"item "}
Я также попытался с помощью WebKit - я знаю, что сайт делает хорошо в WebKit, потому что я тестировал с Rekonq Здесь я получаю страницу (на китайском языке), но фактические/соответствующие данные не существует. WebKit должен запустить Javascript и дать мне окончательные результаты, но я не думаю, что это происходит.
import sys
from io import StringIO
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
from lxml import etree
#Take this class for granted.Just use result of rendering.
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://xxxx.com/category-499399872.htm'
r = Render(url) #returns a Render object
result = r.frame.toHtml() #returns a QString
result_utf8 = result.toUtf8() #returns a QByteArray of utf8 data
#QByteArray->str->unicode
#contents = StringIO(unicode(result_utf8.data(), "utf-8"))
data = result_utf8.data() #returns byte string
print(data)
element = html.fromstring(data)
print(element.tag)
for img in element.xpath('//dl[@class="item "]/dt[@class="photo"]/a/img'):
print(img.get('alt'))
#archive_links = html.fromstring(str(result.toAscii()))
#print archive_links.xpath("/html/body/div[2]/div[3]/div[2]/div[2]/div[1]/div/div/div/div/div/div[2]/div[2]/dl[1]/dt/a/img")
В основном я хочу список запчастей продавец может предложить, что я могу Grep, сортировать, уник. Я также пробовал elinks и рысь с ECMAScript, но это было слишком просто и не работало.
Там нет элемента с именем класса «Col-главный» в html-фрагменте, который вы предоставили? –
darn, извините, я исправлю это - я не могу соответствовать ни одному из этих атрибутов «фотография» или «имя-элемента» - на самом деле ничто из этого не существует для какой-то таинственной причины. WebKit не выполняет JS или что-то в этом роде. Во всяком случае, я работал над этими сценариями и менял вещи, но они в основном правильные - исправят –
grr! «фото» или «элемент» отсутствуют на выходе веб-сайта, насколько мне известно –