亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python - Beautifulsoup - 從要抓取的列表中傳遞單個 url

Python - Beautifulsoup - 從要抓取的列表中傳遞單個 url

斯蒂芬大帝 2023-03-16 17:43:23
我正在嘗試接收下一頁上的網址列表https://sport-tv-guide.live/live/tennis收集到這些 URL 后,我需要將每個 URL 傳遞給一個抓取函數,以抓取并輸出相關的匹配數據。如果特定頁面上只有一個匹配項,則數據會正確輸出,例如 - https://sport-tv-guide.live/live/darts(見下面的輸出)當我使用一個包含多個鏈接的頁面時會出現此問題,例如 - https://sport-tv-guide.live/live/tennis,似乎正在正確抓取 URL(使用打印確認,打印URLS),但它們似乎沒有正確傳遞給要抓取的內容,因為腳本只是默默地失敗了(見下面的輸出)代碼如下:import requestsfrom bs4 import BeautifulSoupdef makesoup(url):    cookies = {'mycountries' : '101,28,3,102,42,10,18,4,2'}    r = requests.post(url,  cookies=cookies)    return BeautifulSoup(r.text,"lxml")   def linkscrape(links):    baseurl = "https://sport-tv-guide.live"    urllist = []        for link in links:        finalurl = (baseurl+ link['href'])        urllist.append(finalurl)        # print(finalurl)            for singleurl in urllist:        soup2=makesoup(url=singleurl)        print(singleurl)        g_data=soup2.find_all('div', {'class': 'main col-md-4 eventData'})        for match in g_data:            hometeam =  match.find('div', class_='cell40 text-center teamName1').text.strip()            awayteam =  match.find('div', class_='cell40 text-center teamName2').text.strip()            dateandtime = match.find('div', class_='timeInfo').text.strip()            print("Match ; " + hometeam + "vs" +  awayteam)             print("Date and Time; ", dateandtime)             def matches():    soup=makesoup(url = "https://sport-tv-guide.live/live/tennis")    linkscrape(links= soup.find_all('a', {'class': 'article flag',  'href' : True}))    我假設問題是,當有多個 URL 時,它們將作為一個大字符串而不是單獨的 URL 傳遞,但我不確定如何讓它一次只傳遞 URL 列表中的每個 URL被刮掉?感謝任何可以提供建議或幫助解決此問題的人。
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

分析鏈接后,2個鏈接指向不同布局的不同頁面。

https://sport-tv-guide.live/live/tennis - 當您獲得所有鏈接時使用此鏈接,它們指向不同的頁面布局。

https://sport-tv-guide.live/live/darts - 此頁面中的鏈接指向此布局。

如果您需要從https://sport-tv-guide.live/live/tennis的所有鏈接中抓取數據,可以使用以下腳本。

import requests

from bs4 import BeautifulSoup


def makesoup(url):

    cookies = {'mycountries' : '101,28,3,102,42,10,18,4,2'}

    print(url)

    r = requests.post(url,  cookies=cookies)

    return BeautifulSoup(r.text,"lxml")

   

def linkscrape(links):

    baseurl = "https://sport-tv-guide.live"

    urllist = []

    

    for link in links:

        finalurl = baseurl + link['href']

        urllist.append(finalurl)

        

    for singleurl in urllist:

        soup2=makesoup(url=singleurl)

        g_data=soup2.find('div', {'class': 'eventData'})

        try:

            teams = g_data.find_all("div", class_=["row","mb-5"])

            

            print("HomeTeam - {}".format(teams[0].find("div", class_="main col-md-8 col-wrap").text.strip()))

            print("AwayTeam - {}".format(teams[1].find("div", class_="main col-md-8 col-wrap").text.strip()))

            channelInfo = g_data.find("div", {"id":"channelInfo"})

            print("Time - {}".format(channelInfo.find("div", class_="time full").text.strip()))

            print("Date - {}".format(channelInfo.find("div", class_="date full").text.strip()))

        except :

            print("Data not found")


def matches():

    soup=makesoup(url = "https://sport-tv-guide.live/live/tennis")

    linkscrape(links=soup.find_all('a', {'class': 'article flag',  'href' : True}))


matches()

注意:我已經放了try/except,因為從頁面獲得的鏈接沒有相同的布局。


輸出:


https://sport-tv-guide.live/live/tennis

https://sport-tv-guide.live/event/live-tennis-national-tennis-centre-roehampton?uid=191007191100

Data not found

https://sport-tv-guide.live/event/bett1-aces-berlin/?uid=71916304

HomeTeam - Tommy Haas - Roberto Bautista-Agut

AwayTeam - Dominic Thiem - Jannik Sinner

Time - 11:15

Date - Sunday, 07-19-2020

https://sport-tv-guide.live/event/bett1-aces-berlin/?uid=71916307

HomeTeam - Tommy Haas - Roberto Bautista-Agut

AwayTeam - Dominic Thiem - Jannik Sinner

Time - 14:00

Date - Sunday, 07-19-2020

https://sport-tv-guide.live/event/bett1-aces-berlin/?uid=17207191605

HomeTeam - Tommy Haas - Roberto Bautista-Agut

AwayTeam - Dominic Thiem - Jannik Sinner

Time - 14:05

Date - Sunday, 07-19-2020

https://sport-tv-guide.live/event/world-teamtennis/?uid=161707191630102

Data not found


查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號