【问题标题】:Scraping specific sports data SELENIUM/BS4抓取特定运动数据 SELENIUM/BS4
【发布时间】:2022-01-09 15:32:24
【问题描述】:

我正在尝试从该页面上抓取数据https://www.flashscore.pl/druzyna/ajax/8UOvIwnb/tabela

Q1:我创建了这段代码,但我不知道如何仅为 AJAX 团队提取数据。数据将保存为列表。稍后它们将被保存到 csv 文件。另外,我不感兴趣,例如符号“?”如何排除它?我会很感激你的帮助。

Q2:如何将“AJAX”的 anserw 与“;”分开阿贾克斯;18;13;3;2;56:4;42;?;W;W;P;W;W;

代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from bs4 import BeautifulSoup as BS
import requests
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.flashscore.pl/druzyna/ajax/8UOvIwnb/tabela/")
sleep(10)
page = driver.page_source
soup = BS(page,'html.parser')
content3 = soup.find('div',{'class':'ui-table__body'})
content_list3 = content.find_all('div',{'class':'tableCellFormIcon tableCellFormIcon--TBD'})

for i in content3:
    print(i.text.split()[0])

结果

1.PSV18141346:2443?WWWWR
2.Ajax18133256:442?WWPWW
3.Feyenoord18123342:1739?WPRWW
4.Vitesse18103525:2533?WRWWR
5.Alkmaar18102635:2332?WWWWW
6.Twente1895428:2232?RWWWR
7.Utrecht1885533:2329?RRRPW
8.Cambuur1891832:3928?RPWPW
9.Nijmegen1874724:2625?WWPPP
10.Heerenveen1874720:2525?PWRWR
11.G.A.
12.Groningen1847720:2719?PPRRW
13.Heracles18531021:2618?RWPPP
14.Willem
15.Waalwijk1837819:3016?RPPWR
16.Sparta
17.Sittard18341119:4613?PRWPP
18.Zwolle1813149:326?PPPRR

【问题讨论】:

    标签: python selenium-webdriver beautifulsoup


    【解决方案1】:

    您可以将其添加到列表中:

    res = []
    for i in content3:
        line = i.text.split()[0]
        print(line)
        res.append(line)
    

    https://docs.python.org/3/tutorial/datastructures.html-

    list.append(x) 将一个项目添加到列表的末尾。相当于 a[len(a):] = [x].


    替换“?”添加这个:

    line = line.replace("?", "")
    

    https://docs.python.org/3/library/stdtypes.html#str.replace-

    str.replace(old, new[, count]) 返回所有字符串的副本 子字符串 old 的出现被 new 替换。如果可选参数 count 是给定的,只有第一个 count 出现被替换。

    检查行是否包含“Ajax”:

    if "Ajax" in line:
        print(line)
    

    【讨论】:

    • 谢谢。但是我如何打印特定团队“AJAX”的结果。当我把它放在列表上时,我可以打印例如只有第三个元素?我该怎么做?
    • @Piotr 查看我的编辑
    • 谢谢。你知道我怎么能分开结果。例如 2.;Ajax;18;1;3;3;2;56:44;2;?;W;W;P;W;W
    • @Piotr 请批准/投票赞成答案,如果需要,请提出另一个问题。
    • 好的,我批准投票并在主题上添加 Q2。谢谢
    【解决方案2】:

    添加正则表达式并排序“Ajax”:

    import re 
    
    res = []
    for i in content3:
        line = i.text.split()[0]
        if re.search('Ajax', line):
            line = line.replace("?", "")
            res.append(line)
    
    print(res)
    

    【讨论】:

    • 非常感谢。如何用“,”分隔结果?
    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2018-11-08
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多