python - 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 没有下载它。请你帮我如何获得城市名称?预先感谢您的帮助。
解决方案
数据存储在<script>
标签内,所以 BeautifulSoup 看不到它。你可以使用re
/ json
modules 来解析它:
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
推荐阅读
- android - 移动应用程序管道的 DevOps 选项
- vsto - 是否可以使用 .Net 5 和非托管 shim 创建 MS Office com 加载项?
- react-native - 为什么在 useEffect 中创建的按钮无法正常工作
- css - Gnome 终端选项卡宽度超出终端窗口
- arrays - 导轨 - 包括?带有对象或对象 ID
- python - 根据关键字列表拆分文本
- r - 使用两列组合
- react-native - 如何在本机反应中按后退键导航到另一个屏幕?
- python - CUDA版本的包没有导入?
- javascript - UnhandledPromiseRejectionWarning: DiscordjsError: 请求使用令牌,但客户端无法使用令牌