【问题标题】:Trying to get score from Rotten Tomatoes URL尝试从烂番茄网址获取分数
【发布时间】:2020-10-05 16:24:24
【问题描述】:

我正在尝试从此链接获取原始分数:https://www.rottentomatoes.com/m/avengers_endgame/reviews

我收到了一些退货,但这不是我所期望的。我得到一个类似这样的列表:

[<selenium.webdriver.remote.webelement.WebElement (session="e31633b4d123fff6432c6726cc26ad65", element="a9b96431-d527-4b79-8ddd-01d18f362cbd")>

(我只是举了一个例子,但是有一个列表)

这是我用来获得此结果的方法:

rows = driver.find_elements_by_xpath("//div[@class='row review_table_row']")
scores =[]
for row in rows:
    scores.append(row.find_elements_by_xpath('//div[contains(concat(" ",normalize-space(@class)," ")," review_desc ")]//div[contains(concat(" ",normalize-space(@class)," ")," small ")]'))

有人知道 xpath 有什么问题吗?

【问题讨论】:

    标签: python xpath web-scraping


    【解决方案1】:

    我们可以使用更具体的 XPath 来确保它首先包含分数

    driver.get("https://www.rottentomatoes.com/m/avengers_endgame/reviews")
    rows = driver.find_elements_by_xpath("//div[@class='row review_table_row' and contains(., 'Original Score:')]")
    

    然后提取变得容易

    scores =[]
    for row in rows:
        scores.append(row.text.split('Original Score: ')[1])
    

    输出[20]: ['2.5/4.0', '4/5', '9/10', '3/5', '2.5/5', '5 / 5', '3.5/4', '4/4', '4/5', '4/5', 'B+', '3.5/4', 'B+', '7/10', '9/10']

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      response.xpath('//div[@class="small subtle review-link"]').get().split('Original Score: ')[1].split('\n')[0]
      

      最后的结果是:

      '2.5/4.0'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多