无法使用请求获取数据,“网络”标签中没有数据源

时间:2019-08-12 03:20:20

标签: python-3.x dom web-scraping beautifulsoup python-requests

嗨,我正在尝试使用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仅包含脚本标签

2 个答案:

答案 0 :(得分:3)

它来自网络套接字,因此您必须搜索WS消息面板:

WS messages inspector

您将无法通过请求获得该信息。您可以尝试硒。

答案 1 :(得分:2)

您可以将pyppeteerasyncio结合使用,以从该站点异步获取列表。

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