2017-02-25 42 views
0

随后该链接,以urllib2的登录: Login to website using urllib2 - Python 2.7解析与POST表单操作一个HTML BeautifulSoup有问题

我所试图做的是创建存储空间的虚拟地图,要做到这一点,我需要登录进入基于网络的管理服务器。因此BS4的使用和urllib。

大部分请求都正常工作,除了手动登录(通过网站)加载页面时与使用urllib时HTML之间存在明显区别。

这里是它的外观,当我在使用日志记录的urllib的方式的一个片段:

<div id="gridContainer" class='grid_12'></div> 

<form action="/Inventory/UnpendStorageSpaces" method="post"><input name="__RequestVerificationToken" type="hidden" value=">>>>>>BLOCKED VALUE>>>>=" /><input id="deviceKey" name="deviceKey" type="hidden" value="" /><input id="facilityItemKey" name="facilityItemKey" type="hidden" value="" /> 

这里是它的外观的一个片段,当我手动登录(通过网站):

<div id="gridContainer" class="grid_12 gridContainer"> 
<div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" id="gbox_gridContainer_grid" dir="ltr" style="width: 940px;"> 
<div class="ui-widget-overlay jqgrid-overlay" id="lui_gridContainer_grid"></div><div class="loading ui-state-default ui-state-active" id="load_gridContainer_grid" style="display: none;">Loading ...</div> 
<div class="ui-jqgrid-view" id="gview_gridContainer_grid" style="width: 940px;"><div class="ui-jqgrid-titlebar ui-widget-header ui-corner-top ui-helper-clearfix" style="display: none;"><a role="link" href="javascript:void(0)" class="ui-jqgrid-titlebar-close HeaderButton" style="right: 0px;"><span class="ui-icon ui-icon-circle-triangle-n"></span></a><span class="ui-jqgrid-title"> 

正如你所看到的,两者之间有明显的区别,只是想看看最好的方法是什么?

回答

1

由于网站使用javascript和JQuery来呈现网页,因此通过urllib获取页面时不会发生这种情况,您会得到不同的结果。

查看the first answer以“用Python进行网页抓取JavaScript页面”获得Python解决方案。其他选项包括使用Selenium或Phantomjs,但希望你不需要。

+0

对不起有一个愚蠢的时刻哈哈,想出了如何刮动态内容...基本上必须使用无头webkit浏览器。 – user3866172