Форум сайта python.su
g = Grab() g.go('https://cs.money/') print(g.xpath("//div[@class='offer_container_inventory_steam']/div[3]/div[1]/div[@class='price']").text_content())
Отредактировано Soures21 (Янв. 24, 2017 17:45:44)
Офлайн
Попробуйте отключить JavaScript в браузере и найти
Офлайн
aiscyТеперь не находит. А разве Python не работает с JS? И как сделать что-бы он прогружал?
Попробуйте отключить JavaScript в браузере и найти
Офлайн
Soures21Для этого вам нужно будет сначала отрендерить нужную страницу через Splash, Selenium, или что-то другое, что умеет рендерить JS.
Теперь не находит. А разве Python не работает с JS? И как сделать что-бы он прогружал?
var xhr = new XMLHttpRequest(); xhr.open('GET', '/load_all_bots_inventory?hash=' + +new Date(), false); xhr.send();
import requests import datetime from pprint import pprint def main(): response = requests.get('https://cs.money/load_all_bots_inventory', params={'hash': '{:.0f}'.format(datetime.datetime.now().timestamp() * 1000)}) dct = response.json() # Делаем что-нибудь с нашими данными with open('file.txt', 'w', encoding='utf-8') as f: pprint(dct, stream=f) # Например сохраняем в файл if __name__ == '__main__': main()
Отредактировано aiscy (Янв. 25, 2017 08:51:17)
Офлайн
aiscyПротестировал ваш метод, действительно все работает, большое спасибо ) но как мне кажется выводится далеко не вся база. (Выводится только выборочные 500-600 предметов)
import requests import datetime from pprint import pprint def main(): response = requests.get('https://cs.money/load_all_bots_inventory', params={'hash': '{:.0f}'.format(datetime.datetime.now().timestamp() * 1000)}) dct = response.json() g = len(dct['1978tolik58']) for i in range(0,g): print(dct['1978tolik58'][i]['m']) print(dct['1978tolik58'][i]['p']) if __name__ == '__main__': main()
Отредактировано Soures21 (Янв. 25, 2017 14:35:38)
Офлайн
Soures21
но как мне кажется выводится далеко не вся база. (Выводится только выборочные 500-600 предметов)
import requests from datetime import datetime from pprint import pprint def main(): response = requests.get('https://cs.money/load_all_bots_inventory', params={'hash': '{:.0f}'.format(datetime.now().timestamp() * 1000)}) data = response.json() names = data.keys() for name in names: print('{} содержит {} записей'.format(name, len(data[name]))) with open('{}.txt'.format(name), 'w', encoding='utf-8') as f: pprint(data[name], stream=f) if __name__ == '__main__': main()
data = response.json() for name in data: for weapon in data[name]: print(weapon['m'])
Отредактировано aiscy (Янв. 25, 2017 15:05:21)
Офлайн
aiscyбольшое спасибо, очень помогли. Могу отблагодарить и отправить на Qiwi?
Офлайн
Soures21Я не против, на email написал.
большое спасибо, очень помогли. Могу отблагодарить и отправить на Qiwi?
Офлайн