Отзывы о веб-скребке -Flipkart - PullRequest
       43

Отзывы о веб-скребке -Flipkart

0 голосов
/ 24 сентября 2018

Я пытаюсь удалить весь обзор продукта (оставшаяся половина обзора отображается после нажатия кнопки «читать дальше». Но я все еще не могу этого сделать. Это не отображает весь контент обзора, который отображаетсяпосле выбора опции «читать дальше». Ниже приведен код, который выбирает опцию «Читать далее», а также получает данные с сайта

import requests
from bs4 import BeautifulSoup
from selenium import webdriver

response = requests.get("https://www.flipkart.com/poco-f1-graphite-black-64-gb/product-reviews/itmf8fyjyssnt25c?page=2&pid=MOBF85V7A6PXETAX")    
data = BeautifulSoup(response.content, 'lxml')
chromepath = r"C:\Users\Mohammed\Downloads\chromedriver.exe"
driver=webdriver.Chrome(chromepath)
driver.get("https://www.flipkart.com/poco-f1-graphite-black-64-gb/product-reviews/itmf8fyjyssnt25c?page=2&pid=MOBF85V7A6PXETAX")
d = driver.find_element_by_class_name("_1EPkIx")
d.click()
title = data.find_all("p",{"class" : "_2xg6Ul"})
text1 = data.find_all("div",{"class" : "qwjRop"})
name = data.find_all("p",{"class" : "_3LYOAd _3sxSiS"})
for t2, t , t1 in zip(title,text1,name) :
    print(t2.text,'\n',t.text,'\n',t1.text)

1 Ответ

0 голосов
/ 26 сентября 2018

Чтобы получить полные обзоры, необходимо нажать на эти кнопки READ MORE, чтобы развернуть остальные.Поскольку вы уже использовали selenium в сочетании с BeautifulSoup, я изменил скрипт, следуя логике.Скрипт сначала нажмет на эти READ MORE кнопки.Как только это будет сделано, он затем проанализирует все titles и reviews оттуда.Теперь вы можете получить titles и reviews с нескольких страниц (до 4 страниц).

import time
from bs4 import BeautifulSoup
from selenium import webdriver

link = "https://www.flipkart.com/poco-f1-graphite-black-64-gb/product-reviews/itmf8fyjyssnt25c?page={}&pid=MOBF85V7A6PXETAX"

driver = webdriver.Chrome() #If necessary, define the chrome path explicitly
for page_num in range(1,5):
    driver.get(link.format(page_num))
    [item.click() for item in driver.find_elements_by_class_name("_1EPkIx")]
    time.sleep(1)
    soup = BeautifulSoup(driver.page_source, 'lxml')
    for items in soup.select("._3DCdKt"):
        title = items.select_one("p._2xg6Ul").text
        review = ' '.join(items.select_one(".qwjRop div:nth-of-type(2)").text.split())
        print(f'{title}\n{review}\n')

driver.quit()
...