Python-Beautifulsoup-从要刮取的列表中传递单个url

Python-Beautifulsoup-从要刮取的列表中传递单个url,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正在尝试接收下一页上的URL列表 收集这些URL后,我需要将每个URL传递给一个scrape函数,以刮取并输出相关的匹配数据 如果特定页面上只有一个匹配项,则正确输出数据,例如-(参见下面的输出) 当我使用存在多个链接(如-)的页面时,会出现此问题。似乎URL被正确地刮取(使用print确认,以打印URL),但它们似乎没有被正确地传递以刮取内容,因为脚本只是无声地失败(见下面的输出) 代码如下: import requests from bs4 import BeautifulSoup

我正在尝试接收下一页上的URL列表

收集这些URL后,我需要将每个URL传递给一个scrape函数,以刮取并输出相关的匹配数据

如果特定页面上只有一个匹配项,则正确输出数据,例如-(参见下面的输出)

当我使用存在多个链接(如-)的页面时,会出现此问题。似乎URL被正确地刮取(使用print确认,以打印URL),但它们似乎没有被正确地传递以刮取内容,因为脚本只是无声地失败(见下面的输出)

代码如下:

import requests
from bs4 import BeautifulSoup

def 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


感谢所有能够提供建议或帮助解决此问题的人。

分析链接后,这两个链接指向具有不同布局的不同页面

-使用此链接获取所有链接时,它们指向不同的页面布局

-此页面中的链接指向此布局

如果您需要从所有链接中提取数据,下面的脚本可以工作

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

页面布局在2个urlstanks@bigbounty之间有很大不同。我已经检查并确认了这一点。当我找到公共元素时,所有链接都能正常工作。如果你想为此创建一个答案,我可以接受它作为正确的答案并投票。我已经发布了一个答案。投票并接受答案