Соскоб цен с Opensea

#python #beautifulsoup #python-requests

#питон #прекрасный суп #python-запросы

Вопрос:

Я пытаюсь соскрести данные с веб-сайта opensea, просто цены и идентификатор токена на данный момент. Таким образом, я использовал запросы и beautifulsoup для того, чтобы перебрать различные элементы коллекции, а затем поместить все файлы. Проблема в том, что я получаю сообщение об ошибке, касающееся строки 10, которую я не понимаю. Если у кого-нибудь есть идея, как я мог бы это сделать, я был бы очень рад. С уважением

 import requests from bs4 import BeautifulSoup bs = BeautifulSoup datas = {} for i in range(0, 20):  p = str(i)  url = "https://api.opensea.io/api/v1/asset/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/"   p   "/"  response = requests.get(url)  tokenid = i  a = bs.find("div", class_="Overflowreact__OverflowContainer-sc-10mm0lu-0 gjwKJf Price--amount")  datas = {tokenid: a}  print(datas)  

Комментарии:

1. На этот вопрос было бы намного проще ответить, если бы вы включили ошибку в полную трассировку стека.

2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

Ответ №1:

Я не уверен, что именно вы ищете. Я обнаружил некоторые ошибки в вашем коде, независимо от того, чего вы пытаетесь достичь. Я бы использовал этот код. Однако все элементы в данных пусты, что означает, что я не могу найти разработчиков с этим классом.

 import requests from bs4 import BeautifulSoup as bs datas = {}  # i and tokenid seem to be the same thing - I simplified it a bit for tokenid in range(20):  p = str(tokenid)  url = "https://api.opensea.io/api/v1/asset/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/"   p   "/"  response = requests.get(url)  html_code = bs(response.content, 'lxml')  a = html_code.find("div", class_="Overflowreact__OverflowContainer-sc-10mm0lu-0 gjwKJf Price--amount")  datas[tokenid] = a # This is the way to set new items in the datas dict  

Комментарии:

1. Здравствуйте, большое спасибо за ваш ответ, я все еще полный новичок, поэтому мой код часто может быть очень уродливым на вид, извините 🙂 Странно, что это не работает, потому что есть lt;divgt; с вышеупомянутым классом, возможно, мне все еще чего-то не хватает

2. Это нормально, мы все были такими некоторое время 🙂

3. Таким образом, в основном фатальной ошибкой была ваша первоначальная строка 10. Ты пропустил один шаг. Вы не можете напрямую применить метод «найти» к ответу, который вы получаете от response.get. Сначала вам нужно применить BeautifulSoup, чтобы превратить его в так называемый «суп», который вы затем можете начать находить. После этого другой фатальной ошибкой было то, как вы попытались добавить новые элементы в диктант.

4. Да, теперь я понимаю, я не могу разобрать что-то, что не является объектом супа, или добавить в словарь таким образом ^^. Это все еще не работает, но, по крайней мере, теперь у меня есть код proprer, большое спасибо !