Я пытаюсь скачать все алмазы, которые у них есть, на следующем сайте: https://www.bluenile.com/diamond-search?tag=none&track=NavDiaVAll
План состоит в том, чтобы взять информацию и попытаться выяснить, какой из них мой любимый купить (я сделаю несколько регрессий, чтобы выяснить, какие из них имеют большую ценность, и выберу мой любимый)
Для этого я написал свой первый скребок. Проблема в том, что он берет только первые 60 бриллиантов вместо всего, что я вижу на сайте. В идеале я бы хотел, чтобы он взял все 100 000+ бриллиантов разных типов, которые у них есть (круглые, подушки и т. Д.).
Как мне получить все данные?
(я думаю, это потому, что некоторые новые строки загружаются только после того, как я прокручиваю вниз, но я думаю, что более чем 60 загружаются с 1-го хода, и если я прокручиваю вниз до дна, он показывает только 1000)
Вот мой код:
import pandas as pd
import requests
from bs4 import BeautifulSoup
url = 'https://www.bluenile.com/diamond-search?tag=none&track=NavDiaVAll'
url_response = requests.get(url)
soup = BeautifulSoup(url_response.content, "html.parser")
""" Now we have the page as soup
Lets start to get the header"""
headerinctags = soup.find_all('div', class_='grid-header normal-header')
header = headerinctags[0].get_text(';')
diamondsmessy = soup.find_all('a', class_='grid-row row ')
diamondscleaned = diamondsmessy[1].get_text(";")
"""Create diamonds dataframe with the header; take out the 1st value"""
header = header.split(";")
del header[0]
diamonds = pd.DataFrame(columns=header)
""" place rows into dataframe after being split; use a & b as dummy variables; take out 5th value"""
for i in range(len(diamondsmessy)):
a = diamondsmessy[i].get_text(";")
b = a.split(";")
del b[4]
a = pd.DataFrame(b, index=header)
b = a.transpose()
diamonds = pd.concat([diamonds, b], ignore_index=True)
print(diamonds)