2016-12-30 2 views
3

Я пытаюсь запросить данные о цене от dukascopy.com, но я столкнулся с аналогичной проблемой с this user, где сами данные о ценах не являются частью html. Поэтому, когда я запускаю свой базовый код urllib для извлечения данных:Как использовать urllib и re для получения данных о реальном времени с помощью Python

import urllib.request 
url = 'https://www.dukascopy.com' 
headers = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'} 
req = urllib.request.Request(url, headers = headers) 
resp = urllib.request.urlopen(req) 
respData = resp.read() 
print(str(respData)) 

данные цены не могут быть найдены. Возвращаясь к this post, пользователь Mark обнаружил еще один URL-адрес, из которого были вызваны данные. Может ли это применяться для сбора данных здесь?

+2

Вам потребуется что-то, что эмулирует браузер и может обрабатывать javascript для загрузки данных о ценах. Использование Selenium - один из вариантов. – jinksPadlock

+1

Есть ли у dukascopy удобный способ получения данных для разработчиков? Я искал «dukascopy developer» и нашел java api и другие ссылки. Не уверен, что они полезны для вас. – tdelaney

+0

Вы также захотите убедиться, что то, что вы делаете, не нарушает условий и услуг. В некоторых случаях соскабливание без разрешения может быть незаконным. –

ответ

1

Попробуйте с dryscape. Вы можете очистить страницы, обработанные JavaScript. Не анализируйте веб-страницы с помощью модуля регулярных выражений. Это не очень хорошая идея. Прочитайте это, почему вы не должны анализировать HTML-страницы с регулярным выражением: HTML with regex. Используйте Beautiful для разбора.

import dryscrape 
from bs4 import BeautifulSoup 

url = 'https://www.dukascopy.com' 
session = dryscrape.Session() 
session.visit(url) 
response = session.body() 
soup=BeautifulSoup(response) 
print soup 
+0

Ну, ваш ответ не ошибается, его ОП попросил помочь сделать это с помощью 'urllib'. –

+1

@EmettSpeer \t Все, что приближает OP к решению, может быть опубликовано как ответ. И справедливо сказать: «Не пытайтесь, попробуйте это вместо». – MYGz

+0

Я не имел в виду так. –

Смежные вопросы