Получить исходный код HTML, в том числе результат JavaScript и аутентификации - PullRequest
1 голос
/ 05 мая 2011

Я строю веб-скребок, и мне нужно получить исходный HTML-код, как он отображается на странице. Однако я получаю только ограниченный источник HTML, который не содержит необходимой информации. Я думаю, что я либо вижу его предварительно загруженным javascript, либо, может быть, я не получаю полную информацию, потому что у меня нет правильной аутентификации ?? Мой результат такой же, как «просмотреть исходный код» в Chrome, когда мне нужно то, что показывает «проверяющий элемент» в Chrome. Мой тест - cimber.dk после ввода информации о рейсе и поиска.

Я пишу на python и пробовал библиотеку urllib2. Потом я услышал, что Selenium хорош для этого, поэтому я тоже попробовал. Тем не менее, это также дает мне тот же ограниченный источник страницы.

Это то, что я пробовал с urllib2 после использования Firebug, чтобы увидеть параметры. (Я удалил все свои куки после открытия cimber.dk, поэтому я начал с «чистого листа»)

url = 'https://www.cimber.dk/booking/'  
values = {'ARRANGE_BY' : 'D',...} #one for each value
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())  
#Using HTTPRedirectHandler instead of HTTPCookieProcessor gives the same.  
urllib2.install_opener(opener)  
request = urllib2.Request(url)  
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0')]  
request.add_header(....) # one for each header, also the cookie one
p = urllib.urlencode(values)  
data = opener.open(request, p).read() 
# data is now the limited source, like Chrome View Source 

#I tried to add the following in some vain attempt to do a redirect.  
#The result is always  "HTTP Error 400: Bad request"

f = opener.open('https://wftc2.e-travel.com/plnext/cimber/Override.action')  
data = f.read()  
f.close()

1 Ответ

2 голосов
/ 05 мая 2011

Большинство таких библиотек не поддерживают javascript.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...