我想从预订网站用漂亮的汤。我需要从西班牙所有的住宿处得到一些信息。这是搜索url:
当我使用开发人员工具检查结果页面中的住宿时,它说这是要搜索的标记:
<a class="hotel_name_link url" href=" /hotel/es/aran-la-abuela.html?label=gen173nr-1DCAEoggJCAlhYSDNYBGigAYgBAZgBMbgBB8gBDNgBA-gBAfgBApICAXmoAgM;sid=1677838e3fc7c26577ea908d40ad5faf;ucfs=1;srpvid=b4980e34f6e50017;srepoch=1514167274;room1=A%2CA;hpos=1;hapos=1;dest_type=country;dest_id=197;srfid=198499756e07f93263596e1640823813c2ee4fe1X1;from=searchresults ;highlight_room=#hotelTmpl" target="_blank" rel="noopener">
<span class="sr-hotel__name
" data-et-click="
customGoal:YPNdKNKNKZJUESUPTOdJDUFYQC:1
">
Hotel Spa Aran La Abuela
</span>
<span class="invisible_spoken">Opens in new window</span>
</a>
这是我的Python代码:
^{pr2}$但是当我运行代码并打印acomodations变量时,它会输出一对括号([])。然后我打印了soup对象,我意识到解析后的HTML与我在Chrome的开发工具中看到的非常不同,这就是soup对象找不到类“hotel\u name”的原因_链接.url““
怎么回事?在
JavaScript正在加载后修改页面。因此,当您使用
page.content
时,它会在JS修改页面之前为您提供页面的HTML内容。在您可以使用selenium来呈现JS内容。页面加载后,您可以使用
driver.page_souce
在JS修改页面源代码并将其传递给BeautifulSoup之后获取它。在编辑:
你需要改变一件事。在
部件
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, 'h1')))
的作用是让驱动程序显式地等待,直到元素位于我们指定的网页上,或者在您指定的延迟时间之后抛出TimeoutException
(我用了10秒)。在我刚刚给你举了一个例子。在执行JavaScript之前,您需要找出加载页面上不存在的元素,并在此处替换它:
(By.TAG_NAME, 'h1')
检查页面中的元素是否存在,并检查该元素在页面中是否存在。在
您可以根据您的需求使用以下任意一种,而不是
By.TAG_NAME
,ID
,NAME
,CLASS_NAME
,CSS_SELECTOR
,XPATH
。在相关问题 更多 >
编程相关推荐