【问题标题】:Website scraping in python, but the class has a varying class name. (discord.py aswell)在 python 中抓取网站,但该类具有不同的类名。 (也是不和谐的.py)
【发布时间】:2021-01-31 23:25:09
【问题描述】:

我正在尝试在“flashscore.com”上抓取比赛详细信息,例如“https://www.flashscore.com/match/hEyZ9RHu/#match-summary”,然后在嵌入中重复使用它们不和谐。基本上所有这些都是通过一个不和谐的机器人完成的,但现在这并不重要。我正在尝试获取其中一个人的全名,但它似乎不起作用。

@client.command(pass_context=True)
async def analize(ctx, link):
    if ctx.guild is not None:
            await ctx.send("Scraping...")
            html=requests.get(link)
            soup=BeautifulSoup(html.text,"html.parser")
            name=soup.find_all('a', class_=re.compile("participantName___"))
            print(name)

这是我的代码,但打印出来的只是 []。总的来说,我对 python、网络抓取和编程真的很陌生,如果我不理解某些内容,请见谅。

但是为什么这不起作用?谢谢。

【问题讨论】:

    标签: python beautifulsoup discord.py discord.py-rewrite python-re


    【解决方案1】:

    您可以尝试使用 SoupStrainer 对象,它会过滤掉任何不必要的 html

    from bs4 import BeautifulSoup, SoupStrainer
    

    您只需向您的BeatifulSoup 对象传递一个额外的参数,称为parse_only,它应该包含您的SoupStrainer 对象。然后你可以遍历所有的 a 标签元素,看看是否有类包含“participantName”,如果有,你可以添加包含参与者名称的 href。

    participants = []
    strainer = SoupStrainer("a")
    soup = BeatifulSoup(html.text "html.parser", parse_only=strainer)
    for elem in soup.find_all("a"):
        try:
           class_ = elem["class"]
        
        except:
            continue
        if "participantName" in class_:
            participants.append(elem["href"])
    

    【讨论】:

    • class= elem["class"] 在 = 上显示语法错误
    • @LukezasZ 现在尝试一下,我所做的只是将变量“class”的名称更改为“class_”,因为“class”是 Python 中的保留关键字。如果它仍然不起作用,请告诉我。
    【解决方案2】:

    我认为除了整个页面请求之外,您还需要 HTML 标头。快速检查显示名称列在<meta name="og:title" content="Timofey Yusipov - Vladimir Marshalov 0:3"> 下的标题中。使用 requests.head() 函数,然后打印标题。一旦你看到一些特定的模式,然后使用 BeautifulSoup 进行解析,甚至只是使用 for 循环遍历标题,寻找“og-title”元数据。

    我是 HTML 新手,所以我不知道如何表达最后一部分。

    【讨论】:

    • 我尝试过这样做,但最终并没有使其正常工作,但最终想到将其更改为这种方式,因为出于其他原因我需要分隔玩家名称。
    • 嗯,好的。试着仔细看看你得到的数据;打印出来,确保里面有你想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多