2015-08-27 3 views
0

Я пытался с различными вариантами, например. Selenium, BeautifulSoup ... и т. Д., Чтобы очистить следующий сайт/страницы: http://item.jd.com/526444.html#comment. Я пытаюсь очистить обзор/разделы: их более 6000, они динамически загружаются JS, jQuery ... и т. Д. Я уже читал существующие статьи в течение нескольких дней, без успеха. Ваша помощь будет высоко оценена. Сайт находится на китайском языке. Я прикрепил снимок экрана ниже, так что вы знаете, где его посмотреть. Спасибо! Я пробовал Селен, но он повесился каждый раз. не знаю почему. enter image description hereСкремблирование отзывов с веб-страницы с помощью JavaScript, JQuery

from selenium import webdriver 
import time 
from pandas import DataFrame 
from urllib.request import urlopen 
from bs4 import BeautifulSoup 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.PhantomJS(executable_path=r'C:\phantomjs') 
driver = webdriver.Chrome(executable_path=r'C:\chrome') 
driver.get("item.jd.com/526444.html#comment") 

try: 
    element = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'loadedButton'))) 
finally: 
    print(driver.find_element_by_id('content').text) 
driver.close() 


driver.page_source 
bsObj = BeautifulSoup(driver.page_source) 


import requests 
from lxml import html 
response = requests.get('http://pycoders.com/archive/') 
tree = html.fromstring(response.text) 
print(tree.xpath('//divass="campaign"]/a/@href')) 

import sys 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 
from lxml import html 
from bs4 import BeautifulSoup 



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://item.jd.com/526444.html#comment' 
r= Render(url) 
result = r.frame.toHtml() 
jd = BeautifulSoup(result) 
jd.find('span', {'class':'desc'}) 
+0

Что вы пытаетесь? Просьба представить образцы кода и ошибки, чтобы мы могли направлять вас в правильном направлении. – JeffC

+0

@JeffC да, я только что обновил код. Я пробовал разные вещи, извините, код очень грязный. Я пробовал Селен, потом он повесился без видимой причины. Я попробовал PyQt и не смог захватить обзор, который я хотел. Заранее спасибо за помощь! –

+0

Просьба указать необходимую разметку страницы. –

ответ

1

К сожалению ... Я забыл упомянуть, что я не знаю, питона так это написано в Java. Надеюсь, вы сможете перевести.


На этом сайте есть некоторые проблемы с проблемами. Если вы загружаете URL-адрес #comment, он должен открыть вкладку комментариев, но это не всегда так, что мне пришлось добавить клик, и даже тогда он не всегда открывается. Я собираюсь оставить вам время, потому что этот вопрос не об этом.

Этот код захватывает тег TABLE, содержащий каждый из «строк» ​​комментариев. Затем он перебирает эту конкретную таблицу в поисках комментария и рейтинга. Прямо сейчас я сбрасываю комментарий и класс оценки на консоль. Класс рейтинга находится в формате «g-star5», где 5 - количество звезд. Вам придется разбирать их и хранить, но они вам нужны.

driver.get("http://item.jd.com/526444.html#comment"); 
driver.findElement(By.cssSelector("a[href='#comment']")).click(); // extra click, shouldn't be needed 
List<WebElement> items = driver.findElements(By.cssSelector("table.com-item-main")); 
for (WebElement item : items) 
{ 
    System.out.println(item.findElement(By.cssSelector("div.p-comment > span.desc")).getText()); // the item (?) text 
    System.out.println(item.findElement(By.cssSelector("div.grade-star")).getAttribute("class")); // the item (?) text 
} 
+0

Я использую Python 34. по какой-то причине. по какой-то причине я не получаю ответа на следующий код: driver.get («http://item.jd.com/526444.html#comment») вам нужно долго ждать использования Java? –

+0

Извините ... Я забыл, что вы написали свой образец в python. Это Java. Я обновил свой ответ, чтобы заявить о себе для других, которые приходят позже. – JeffC

+0

Эта страница довольно большая и сложная ... и я не в Китае, поэтому она загружается довольно медленно для меня. :) Я обнаружил странные проблемы при загрузке исходного URL, где иногда он переключался на вкладку комментариев, а в других случаях - нет. – JeffC