2015-08-17 5 views
2

Я пытаюсь получить код HTML, который, вероятно, динамически генерируется. Единственное, что я пытаюсь сделать, это получить html-код следующей страницы. Если вы нажмете на кнопку, все отлично работает. Но если вы проверяете HREF этой страницы и просто скопировать вставить его в ваш браузер адрес форму и отправить, вы получите текст, который, кажется, как это:Не могу получить HTML из запроса GET

{"paging":{"isLastPage":false},"pagination":{"firstUrl":"/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255/showmore?q=*&filter_Buyable=1&filter_Category4=Sp%C3%BA%C5%A1%C5%A5acie+obvody&filter_Category3=Anal%C3%B3gov%C3%A9+obvody&useTechnicalView=true&pageSize=10&page=1","prevUrl":"/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255/showmore? 

То же самое происходит, когда вы пытаетесь сделать запрос с это заголовки.

Дело в том, что я хочу, чтобы получить HTML-код страницы, которую вы получаете, когда вы нажимаете на кнопку следующей странице здесь: http://www.distrelec.sk/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255

вы знаете, как получить HTML-код?

EDIT: Я попытался найти GET, который вызывает следующую страницу, и использует модуль запросов для имитации щелчка (со всеми заголовками запросов), но я получил тот же результат. Нет HTML.

+0

По URL-адресу, который вы включили, кнопка следующей страницы ссылается на [этот URL-адрес] (http://www.distrelec.sk/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255? pageSize = 10 & page = 2), который, как представляется, является еще одной страницей HTML. Во всяком случае, похоже, что вы можете просто добавить «? PageSize = 36 & page = N» к URL-адресу, но замените N цифрами 1,2,3 и т. Д., Пока не появится больше результатов. Таким образом, вам не нужно напрямую связываться с кнопкой следующей страницы. –

+0

Кажется, я не могу воспроизвести и ваш результат. Href относится к/sk/komponenty/aktivne-prvky/analogove-obvody/spustacie-obvody/c/cat-L3D_525255? PageSize = 10 & page = 2. Как выглядит ваш код? –

ответ

1

Вы получаете JSON, который, вероятно, помогает динамически генерировать следующую страницу. Если вы просто хотите увидеть html следующей страницы, просто щелкните правой кнопкой мыши и в любом случае выберите «Проверить элемент» в Google Chrome после загрузки страницы.

Но если вы хотите URL-адрес следующей страницы, внутри JSON он ссылается на URL-адреса.

1

Я не могу получить результат JSON, но это сработало для меня, используя BeautifulSoup.

import urllib2 
from bs4 import BeautifulSoup 

url = #that url 
html = urllib2.urlopen(url) 
soup = BeautifulSoup(html) 

# this gives you the specific next link 
next_link_tags = soup.find_all('a','btn btn-right js-page-link') 
next_link_url = "http://www.distrelec.sk" + next_link_tags[0]['href'] 

html2 = BeautifulSoup(urllib2.urlopen(next_link_url)) 
print html2 
+0

Это не работает. Суп ссылки не содержит эти теги. Другое дело, что «btn btn-right js-page-link» не является одним классом. Это многоуровневые классы, которые BS не может справиться таким образом. –

0

Вы должны понимать, как формируется HTML-код страницы 2. enter image description here Секрет не только прибудет JSON из «2» содержаний, но и правильно вставить его (замените с ним «содержанием 1») в основной HTML. Несомненно, определенный JavaScript отвечает за декодирование JSON и обновление/замену содержимого. Вам нужно:

  • найти, какие функции работают, чтобы заменить «содержание 1» в «содержания 2» (через изучение HTML и JS-скрипты) и что они делают частичный.
  • имеет исходный HTML
  • ПОЛУЧИТЬ JSON (как вы сделали)
  • замены симулировать оригинальное HTML в виде строки с любым питоном/другим язык означает. Для этого используйте regex. Или, если вы можете сделать HTML структурой DOM, используйте XPath.

У вас обязательно будет много вакансий. Быть экспертом в JS. :-)

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