python - 无法从课堂上刮取文字(BeautifulSoup)
问题描述
我在从网站获取数据以获取统计数据时遇到问题,我尝试了一堆不同的解析器,但每次它返回的内容都是“无”
import requests
from bs4 import BeautifulSoup
url = "https://www.opap.gr/lotto-draw-results"
user = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
req = requests.get(url, headers = user)
soup = BeautifulSoup(req.text, "html.parser")
i = 1
while i <= 6:
for draw_num in soup.findAll("li", {"class": "draw-result-number-{}".format(i)}):
print(draw_num.content)
i += 1
网站上的一段 html 代码:
<ul class="circles"> <li class="draw-result-number-1">1</li> <li class="draw-result-number-2">2</li> <li class="draw-result-number-3">12</li> <li class="draw-result-number-4">14</li> <li class="draw-result-number-5">20</li> <li class="draw-result-number-6">49</li> <span class="plus_symbol" style="display: inline;">+</span> <li class="highlighted draw-result-number-bonus" style="display: inline-block;">8</li> </ul>
如果你能帮助我,我将不胜感激。
解决方案
从外观上看,数据没有嵌入到 html 中,而是从附加的 API 调用中检索到的:
https://api.opap.gr/draws/v3.0/5103/last-result-and-active?status=results
您可以解析它以获得中奖号码:
import requests
req = requests.get("https://api.opap.gr/draws/v3.0/5103/last-result-and-active?status=results")
data = req.json()
print(data["last"]["winningNumbers"])
似乎 url 路径是静态的,在 JS 中它是动态构建 url 而 5103 表示它是Lotto
游戏,请参阅此文件
推荐阅读
- r - cowplot:调用 plot_grid 后提取子图
- php - PHP:下载/阅读 Google Drive Sheet
- python - 在python中访问数组的位置[i-1] - 过滤器
- java - 将 Java 类转换为 XML 模式 (XSD) 文件
- spring-boot - 如何模拟使用 OAUTH2 的测试 REST 控制器
- javascript - JS - 在纯 JS 中特定计数后隐藏 div
- ballerina - 我可以访问 Ballerina 程序中的资源路径吗?
- json - Angular 4 - 使用 JSON 数据填充表单不起作用
- c# - 绑定下拉列表文本设置也不例外
- python - 通过 Bash 将 Python 脚本重定向到文件时,“ascii”编解码器无法编码字符