#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, большое спасибо !