【发布时间】:2021-04-07 02:19:10
【问题描述】:
这个问题跟在previous question 后面。我想使用 Python 从博彩网站上抓取数据。我首先尝试关注此tutorial,但问题是该站点tipico 无法从瑞士获得。因此,我选择了另一个博彩网站:Winamax。在本教程中,首先检查网页tipico,以便找到投注率在 html 文件中的位置。在tipico 网页中,它们存储在“c_but_base c_but”类的按钮中。通过编写以下行,可以使用 Beautiful soup 模块保存和打印费率:
from bs4 import BeautifulSoup
import urllib.request
import re
url = "https://www.tipico.de/de/live-wetten/"
try:
page = urllib.request.urlopen(url)
except:
print(“An error occured.”)
soup = BeautifulSoup(page, ‘html.parser’)
regex = re.compile(‘c_but_base c_but’)
content_lis = soup.find_all(‘button’, attrs={‘class’: regex})
print(content_lis)
因此,我尝试对网页 Winamax 做同样的事情。我检查了页面,发现投注率存储在“ui-touchlink-needsclick priceodd-price”类的按钮中。请看下面的代码:
from bs4 import BeautifulSoup
import urllib.request
import re
url = "https://www.winamax.fr/paris-sportifs/sports/1/7/4"
try:
page = urllib.request.urlopen(url)
except Exception as e:
print(f"An error occurred: {e}")
soup = BeautifulSoup(page, 'html.parser')
regex = re.compile('ui-touchlink-needsclick price odd-price')
content_lis = soup.find_all('button', attrs={'class': regex})
print(content_lis)
问题在于它什么也不打印:Python 找不到 此类类的元素(对吗?)。因此,我尝试打印 soup 对象,以查看 BeautifulSoup 函数到底在做什么。我添加了这一行
print(soup)
打印时(我没有显示汤的打印,因为它太长了),我注意到这与我右键单击“检查”时出现的文本不同"的 Winamax 网页。那么 BeautifulSoup 函数到底在做什么呢?如何使用 BeautifulSoup 存储来自 Winamax 网站的投注率?
编辑:我从来没有用 html 编写过代码,而且我是 Python 的初学者,所以有些术语可能是错误的,这就是为什么有些部分是斜体的。
【问题讨论】:
-
“我注意到这与我右键单击“检查”Winamax 网页时出现的文本不同。”这是您的实际问题,与 BeautifulSoup 无关。在构建爬虫时经常发生这种情况:网站不会向机器人发送相同的响应。尤其是博彩网站,他们当然必须有反机器人保护。您在浏览器中看到的网页可能是事后使用 Javascript 编辑的。
标签: python beautifulsoup