python - 无法从类中抓取文本 (BeautifulSoup)

标签 python web-scraping 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游戏,参见this file

关于python - 无法从类中抓取文本 (BeautifulSoup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910736/

相关文章:

python - BeautifulSoup 无法读取 html

python - Beautiful Soup 找到具有隐藏样式的元素

python - 使 python 2.6 异常向后兼容

python - 分离 celery 消费者和生产者

python - 选择 Pandas 中 ID 相同但值不同的行

python - 类型错误 : file must have 'read' and 'readline' attributes

python - 使用 Split 方法或 Regex 来分隔字符串

python - UnicodeEncodeError : 'ascii' codec can't encode character '\xe9' - -when using urlib.请求python3

python - 等待页面加载后 Selenium 无响应

python - 使用 BeautifulSoup 从 span 类中提取 anchor 文本