BeautifulSoup:只有在同一URL中单击jvector map后才能访问HTML

时间:2017-04-04 21:40:31

标签: python-3.x beautifulsoup jvectormap

我正在尝试编写一个python脚本来自动执行我每天在Groupons商务界面网站上做的一些任务(对于卖家),他们有订单api而不是po,所以我想写一些东西刮掉数据。

但是,要选择您所在的国家/地区,您需要登录到您,并显示一张jvector地图,您必须点击该地区才能访问login page

您无法右键单击该页面以查看来源,但您可以检查要单击的国家/地区的元素。

请有人指出我正确的方向。

非常感谢。

1 个答案:

答案 0 :(得分:0)

地图的代码在页面源中不可用,因为它是使用AJAX呈现的。

您仍然可以使用无头浏览器(如PhantomJS)和Selenium(以操纵DOM)来抓取网站。

当您点击任何国家/地区的检查元素时,您会看到这样的代码

<path d="M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-
7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-
4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-
4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,
1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z" data-code="IS" fill="#dadada" 
fill-opacity="1" stroke="none" stroke-width="0" stroke-opacity="1" 
fill-rule="evenodd" class="jvectormap-region jvectormap-element">
</path>

每个国家/地区的代码类似,但“&#39; d&#39;和&#39;数据代码&#39;属性。这两者对每个国家都是独一无二的。您可以使用selenium webdriver使用此唯一属性查找元素,然后使用click方法转到登录页面。我想这个网站的其他部分也会加载AJAX中的东西,所以你可以坚持使用Selenium,PhantomJS和BeautifulSoup组合模拟用户登录(使用你的凭据,我没有,所以我无法尝试)然后刮掉你需要的任何结果。

希望这有助于入门!

奖励:了解这些价值观是什么?属性均值,read this