循环和网络抓取。如何刮掉多个元素

问题描述 投票:0回答:1

我试图从网站上刮掉赔率。目前我的代码可以打印游戏的最后一个奇怪但不是全部。我做错了什么想法?

from bs4 import BeautifulSoup
from urllib.request import urlopen as uReq
my_url = 'https://www.sportsbet.com.au/betting/australian-rules'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()

soup = BeautifulSoup(page_html, "html.parser")

price_texts = soup.findAll("div",{"class":"priceText_f71sibe"})
filename = "odds.csv"
f = open(filename,"w")
headers = "odds team 1\n"

f.write(headers)



for price_text in price_texts:
    odds = price_text.span.text

print("odds are: "+odds)

f.write(odds)
f.close()
python html web-scraping beautifulsoup
1个回答
0
投票

当然它只打印最后几个赔率,因为你在print循环之外写了f.write()for部分。 odds值每次都会改变,直到循环停止。你应该通过在printf.write(odds)上添加缩进来使它们在循环中:

for price_text in price_texts:
    odds = price_text.span.text
    print("odds are: "+ odds)
    f.write(odds)
© www.soinside.com 2019 - 2024. All rights reserved.