веб-очистка проблемного сайта - PullRequest
0 голосов
/ 10 октября 2009

Я пытаюсь почерпнуть некоторую информацию с веб-сайта, но у меня проблемы с чтением соответствующих страниц. Похоже, что страницы сначала отправляют базовую настройку, а затем более подробную информацию. Мои попытки загрузки, похоже, фиксируют только основные настройки. До сих пор я пробовал urllib и механизировал.

Firefox и Chrome без проблем отображают страницы, хотя я не вижу нужные части при просмотре источника страницы.

URL-адрес образца https://personal.vanguard.com/us/funds/snapshot?FundId=0542&FundIntExt=INT

Мне бы хотелось, например, средний срок погашения и средняя продолжительность в правом нижнем углу страницы. Проблема не в извлечении этой информации со страницы, а в ее загрузке, чтобы я мог извлечь эту информацию.

Ответы [ 5 ]

2 голосов
/ 10 октября 2009

Страница использует JavaScript для загрузки данных. Firefox и Chrome работают только потому, что у вас включен JavaScript - попробуйте отключить его, и вы получите практически пустую страницу.

Python не сможет сделать это сам по себе - ваш лучший компромисс - управление реальным браузером (Internet Explorer - самый простой, если вы работаете в Windows) из Python, используя что-то вроде Pamie .

1 голос
/ 10 октября 2009

Сайт загружает данные через ajax. Firebug показывает вызовы ajax. Для данной страницы данные загружаются из https://personal.vanguard.com/us/JSP/Funds/VGITab/VGIFundOverviewTabContent.jsf?FundIntExt=INT&FundId=0542

См. Соответствующий код JavaScript на оригинальной странице:

<script>populator = new Populator({parentId:
"profileForm:vanguardFundTabBox:tab0",execOnLoad:true,
 populatorUrl:"/us/JSP/Funds/VGITab/VGIFundOverviewTabContent.jsf?FundIntExt=INT&FundId=0542",
inline:fals   e,type:"once"});
</script>
0 голосов
/ 10 октября 2009

Попробуйте iMacros. Я очень уверен, что это решит вашу проблему.

http://www.iopus.com/imacros/firefox/?ref=fxmoz

0 голосов
/ 10 октября 2009

Как упомянул RichieHindle, для Windows лучше всего использовать класс WebBrowser для создания экземпляра механизма визуализации IE, а затем использовать его для просмотра сайта.

Класс предоставляет вам полный доступ к дереву DOM, поэтому вы можете делать с ним все, что захотите.

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser(loband).aspx

0 голосов
/ 10 октября 2009

Причина в том, что он выполняет вызовы AJAX после загрузки. Вам также нужно будет учесть эти URL-адреса для очистки их содержимого.

...