使用 Selenium 进行页面导航

问题描述 投票:0回答:1

出于个人兴趣,我想在以下网页上抓取汽车评论

www.cardekho.com/user-reviews/maruti-alto-800

我使用以下代码成功抓取了第一页的评论

pip install selenium
pip install webdriver-manager
import selenium
from selenium import webdriver
from selenium.webdriver import ActionChains

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('chromedriver.exe')

url = 'https://www.cardekho.com/user-reviews/maruti-alto-800'
driver.get(url)

reviews = driver.find_elements(By.CSS_SELECTOR, ".contentspace")


for i in reviews:
    i_title = i.find_element(By.CSS_SELECTOR, "h3 > a")
    i_desc = i.find_element(By.CSS_SELECTOR, "p")
    print(i_title.text, i_desc.text)

但我似乎无法抓取下一页上所有其他剩余的评论 它们的范围从 1 到 16,其中包括“下一个”。

  1. 你能帮我从所有其他页面上抓取吗
  2. 我想在我的数据框中包含每条评论的星级指标。有什么办法可以刮掉它们吗?

我尝试了以下代码,选择“页面栏”的主要部分 但是 page_bar[0] 给了我第 6 页,超过 [0] 会给我“列表超出范围”

page_bar = driver.find_elements(By.CSS_SELECTOR, '#rf01 > div.app-content > div > div:nth-child(1) > main > div > div.gsc_col-xs-12.gsc_col-sm-12.gsc_col-md-8.gsc_col-lg-9 > div:nth-child(3) > section > div > div.marginTop20 > div > div > div > ul')
for i in page_bar:
    print(i.text)

page_bar[0].click()
selenium-webdriver web-scraping beautifulsoup
1个回答
1
投票

如果单击下一页,您会注意到包含页码的链接。

例如第 2 页:https://www.cardekho.com/user-reviews/maruti-alto-800/2?subtab=latest

例如第 3 页:https://www.cardekho.com/user-reviews/maruti-alto-800/3?subtab=latest

因此,要完成您的任务,您只需通过更改链接中的数字添加一个 for 循环来遍历第 1-16 页,您就可以抓取所需的所有页面。

例如,

for i in range(1, 16):
    CurrentLinkIs = "https://www.cardekho.com/user-reviews/maruti-alto-800/" + str(i) + "?subtab=latest"
    #perform your scraping here
    #.
    #.
    #.
© www.soinside.com 2019 - 2024. All rights reserved.