Не могу разобрать большой стол в Beautifulsoup - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь почистить таблицу, но Beautifulsoup возвращает только 60 элементов, таблица значительно больше. Я попытался прокрутить страницу до конца (разрешив загрузку полной таблицы), а затем проанализировал HTML, но это не сработало.


webdriver=webdriver.Chrome()
webdriver.get('https://www.bluenile.com/diamonds/round-cut')
WebDriverWait(webdriver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#diamond-result 
webdriver.execute_script("window.scrollTo(0, document.body.scrollHeight);
data=BeautifulSoup(webdriver.page_source,'html5lib')
shape=[]
price=[]
carat=[]
cut=[]
color=[]
clarity=[]
date=[]
table=data.find('div',{'class':'grid-body'})

data_shape=table.find_all('span',{'class':'single-cell'})
for items in data_shape:
    shape.append(items.getText())

data_price=(table.find_all('div',{'class':'row-cell price'}))

for items in data_price:
    price.append(items.getText())

data_carat=(table.find_all('div',{'class':'row-cell carat'}))

for items in data_carat:
    carat.append(items.getText())

data_cut=(table.find_all('div',{'class':'row-cell cut'}))

for items in data_cut:
    cut.append(items.getText())

data_color=(table.find_all('div',{'class':'row-cell color'}))

for items in data_color:
    color.append(items.getText())

data_clarity=(table.find_all('div',{'class':'row-cell clarity'}))

for items in data_clarity:
    clarity.append(items.getText())

data_date=(table.find_all('div',{'class':'row-cell date'}))

for items in data_date:
    date.append(items.getText())

print(str(shape))
print(str(price))

1 Ответ

1 голос
/ 23 января 2020

Сценарии в порядке. Однако, когда вы прокручиваете страницу до конца, загрузка данных таблицы данных занимает некоторое время. Вам нужно добавить некоторую задержку time.sleep(5), чтобы получить больше записей. Кроме того, я получаю 510 записи.

webdriver=webdriver.Chrome()
webdriver.get('https://www.bluenile.com/diamonds/round-cut')
WebDriverWait(webdriver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"#diamond-result")))
webdriver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
#Added some delay
time.sleep(5)
data=BeautifulSoup(webdriver.page_source,'html5lib')
shape=[]
price=[]
carat=[]
cut=[]
color=[]
clarity=[]
date=[]
table=data.find('div',{'class':'grid-body'})

data_shape=table.find_all('span',{'class':'single-cell'})
for items in data_shape:
    shape.append(items.getText())

data_price=(table.find_all('div',{'class':'row-cell price'}))

for items in data_price:
    price.append(items.getText())

data_carat=(table.find_all('div',{'class':'row-cell carat'}))

for items in data_carat:
    carat.append(items.getText())

data_cut=(table.find_all('div',{'class':'row-cell cut'}))

for items in data_cut:
    cut.append(items.getText())

data_color=(table.find_all('div',{'class':'row-cell color'}))

for items in data_color:
    color.append(items.getText())

data_clarity=(table.find_all('div',{'class':'row-cell clarity'}))

for items in data_clarity:
    clarity.append(items.getText())

data_date=(table.find_all('div',{'class':'row-cell date'}))

for items in data_date:
    date.append(items.getText())

print(len(shape))
print(len(price))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...