【问题标题】:Scraping reviews from Webpage with JavaScript, JQuery [closed]使用 JavaScript、JQuery 从网页中抓取评论 [关闭]
【发布时间】:2015-08-27 08:43:34
【问题描述】:

我尝试了各种选项,例如Selenium、BeautifulSoup...等来抓取以下站点/页面:http://item.jd.com/526444.html#comment。我正在尝试抓取评论/部分:其中有 6000 多个,由 JS、jQuery 等动态加载。我已经阅读现有文章好几天了,到目前为止还没有成功。您的帮助将不胜感激。网站是中文的。我在下面附上了一个屏幕截图,所以你知道该看哪里。谢谢!我尝试了 Selenium,但每次都挂起。不知道为什么。

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'})

【问题讨论】:

  • 你试过什么?请提供代码示例和错误,以便我们指导您正确的方向。
  • @JeffC 是的,我刚刚更新了代码。我尝试了不同的东西,抱歉代码很乱。我尝试了 Selenium,然后它无缘无故挂了。我试过 PyQt 也无法捕捉到我想要的评论。提前感谢您的帮助!
  • 请提供必要的页面标记。

标签: javascript jquery selenium scrape


【解决方案1】:

对不起...我忘了提到我不知道python所以这是用Java编写的。希望你能翻译。


这个网站有一些非常糟糕的时间问题。如果您加载#comment URL,它应该会打开评论选项卡,但它并不总是如此,所以我不得不添加一个点击,即使那样它也并不总是打开。我将把时间问题留给你,因为这个问题与此无关。

此代码获取包含每个注释“行”的 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
}

【讨论】:

  • 出于某种原因,我正在使用 Python 34。出于某种原因,我没有得到以下代码的响应: driver.get("item.jd.com/526444.html#comment") 使用 Java 是否需要等待很长时间?
  • 对不起...我忘了你是用 python 写的。这是Java。我更新了我的答案,以便为以后出现的其他人说明。
  • 那个页面很大很复杂......而且我不在中国,所以它对我来说加载速度很慢。 :) 我在加载原始 URL 时发现了一些奇怪的问题,有时它会切换到评论选项卡,有时却不会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 2010-10-25
  • 2022-06-30
  • 1970-01-01
相关资源
最近更新 更多