嗨,我正在尝试使用Requests模块和BS4加载https://www.ubytovanienaslovensku.eu/,但是我无法获取所需的数据。似乎正在使用js加载数据,但在Chrome Dev工具的“网络”标签中看不到任何数据源。
import requests
import bs4
import lxml
url ='https://www.ubytovanienaslovensku.eu'
res = requests.get(url)
soup = bs4.BeautifulSoup(res.content, 'lxml')
print(soup.get_text())
我看到站点上的数据正在动态加载,但没有看到这些数据的任何来源。
我需要网站上的清单。不仅基本的HTML仅包含脚本标签
答案 0 :(得分:3)
答案 1 :(得分:2)
您可以将pyppeteer
与asyncio
结合使用,以从该站点异步获取列表。
import asyncio
from pyppeteer import launch
url = "https://www.ubytovanienaslovensku.eu/"
async def get_listings(link):
wb = await launch({"headless": False})
[page] = await wb.pages()
await page.goto(link)
await page.waitForSelector('#home-rentals')
containers = await page.querySelectorAll('.rental-item')
for container in containers:
title = await container.querySelectorEval('span.caption','e => e.innerText')
link = await page.evaluate('e => e.href',container)
print(title,link)
asyncio.get_event_loop().run_until_complete(get_listings(url))
输出类似于:
VIP SK Drevenica - Liptovská Štiavnica (max. 75) https://www.ubytovanienaslovensku.eu/chalupky-u-babky
VIP SK Drevenica - Mýto pod Ďumbierom (max. 28) https://www.ubytovanienaslovensku.eu/chata-zinka
VIP SK Drevenica - Liptovský Trnovec (max. 72) https://www.ubytovanienaslovensku.eu/liptovske-chaty
VIP SK Drevenica - Ružomberok (max. 90) https://www.ubytovanienaslovensku.eu/chaty-liptovo