首页 > 解决方案 > Python beautifulsoup - 如何获取项目,稍后在浏览器中加载

问题描述

说到 Python,我是个业余爱好者。我有一个页面,我想从网站下载一件事 - Town。这是链接: https ://www.olx.pl/d/oferta/echosonda-raymarine-dragonfly-5pro-najtaniej-w-polsce-1-CID767-IDHur6N.html 和屏幕城镇在哪里:

在此处输入图像描述

在浏览器中,我有这个带有城镇的 html 来源:

<p class="css-7xdcwc-Text eu5v0x0">Bydgoszcz, <span class="css-1c0ed4l"></span></p>

我编写了这段代码,但不幸的是它没有为我获取这些信息。

import requests
from bs4 import BeautifulSoup


link='https://www.olx.pl/d/oferta/echosonda-raymarine-dragonfly-5pro-najtaniej-w-polsce-1-CID767-IDHur6N.html'
page1 = requests.get(link).content
advertisement = BeautifulSoup(page1, "html.parser")
town = advertisement.find('p', {'class' : 'css-7xdcwc-Text eu5v0x0'}).text.strip()
print(town)

看起来城市正在稍后登陆。而且 BeautifulSoup 没有下载它。请你帮我如何获得城市名称?预先感谢您的帮助。

标签: pythonpython-3.xbeautifulsoup

解决方案


数据存储在<script>标签内,所以 BeautifulSoup 看不到它。你可以使用re/ jsonmodules 来解析它:

import re
import json
import requests

url = "https://www.olx.pl/d/oferta/echosonda-raymarine-dragonfly-5pro-najtaniej-w-polsce-1-CID767-IDHur6N.html"
html_doc = requests.get(url).text

data = re.search(r"window\.__PRERENDERED_STATE__= ({.*})", html_doc).group(1)
data = json.loads(data)

# uncomment to print all data:
# print(json.dumps(data, indent=4))

print("City:", data["ad"]["ad"]["location"]["cityName"])
print("Region:", data["ad"]["ad"]["location"]["regionName"])

印刷:

City: Bydgoszcz
Region: Kujawsko-pomorskie

推荐阅读