无法从类中删除文本(BeautifulSoup)

2024-05-17 18:11:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,从网站获取数据与抽签统计,我尝试了一堆不同的解析器,但每次它返回的内容是“无”

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代码:

^{pr2}$

如果你能帮助我,我将不胜感激。在


Tags: fromimport解析器url内容网站htmlrequests
2条回答

从外观上看,数据不是嵌入到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

以下是如何在您的案例中使用selenium

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

options = webdriver.ChromeOptions()
options.add_argument('headless')
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(chrome_options=options, desired_capabilities=capa)
driver.set_window_size(1440,900)
driver.get('https://www.opap.gr/lotto-draw-results')
time.sleep(15) # wait for the website to load in selenium process

plain_text = driver.page_source
soup = BeautifulSoup(plain_text, 'lxml')

你所有的元素都会包含在汤里。在

相关问题 更多 >