第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Python - Beautifulsoup - 只返回一個結果

Python - Beautifulsoup - 只返回一個結果

紫衣仙女 2023-03-16 10:59:41
我正試圖從下面的鏈接中抓取運動日程數(shù)據(jù)https://sport-tv-guide.live/live/darts我在下面使用以下代碼import requestsfrom bs4 import BeautifulSoupdef makesoup(url):    page=requests.get(url)    return BeautifulSoup(page.text,"lxml")       def matchscrape(g_data):    for match in g_data:        datetimes = match.find('div', class_='main time col-sm-2 hidden-xs').text.strip()        print("DateTimes; ", datetimes)         print('-' *80)        def matches():    soup=makesoup(url = "https://sport-tv-guide.live/live/darts")    matchscrape(g_data = soup.findAll("div", {"class": "listData"}))我遇到的問題是只返回第一個結果(見下文)而應該輸出兩個值(見下文)我打印了從運行中收到的輸出def matches():    soup=makesoup(url = "https://sport-tv-guide.live/live/darts")    matchscrape(g_data = soup.findAll("div", {"class": "listData"}))并且由于某種原因似乎只有第一個結果在 HTML 中返回(見下文),這將導致為什么只返回第一個結果,因為這是可以從收到的 HTML 中找到的唯一結果。我不確定的是為什么 Beautifulsoup 沒有輸出整個 HTML,所以所有的結果都可以輸出?
查看完整描述

4 回答

?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

你的matchscrape功能是錯誤的。而不是match.find返回第一項的函數(shù),您應該使用與matches函數(shù)match.findAll函數(shù)相同的方式。然后像下面的例子一樣遍歷找到的日期時間。


def matchscrape(g_data):

    for match in g_data:

        datetimes = match.findAll('div', class_='main time col-sm-2 hidden-xs')

        for datetime in datetimes:

            print("DateTimes; ", datetime.text.strip())

            print('-' * 80)

第二件事是解析 html 頁面。該頁面是用 編寫的,html因此您可能應該使用BeautifulSoup(page.text, 'html.parser')而不是lxml


查看完整回答
反對 回復 2023-03-16
?
江戶川亂折騰

TA貢獻1851條經(jīng)驗 獲得超5個贊

我也只有 1 個時間戳。不過,還有其他可能導致問題的原因。在這種情況下,網(wǎng)站通常具有動態(tài)內(nèi)容,并且在某些情況下,這些內(nèi)容并不總是隨請求正確加載。


如果您真的確定問題是請求沒有正確獲取站點,請嘗試requests_html(pip install requests-html),這會打開一個肯定會加載所有動態(tài)內(nèi)容的會話:


from requests_html import HTMLSession

from bs4 import BeautifulSoup


session = HTMLSession()

request = session.get(LINK)

html = BeautifulSoup(request.text, "html.parser")


查看完整回答
反對 回復 2023-03-16
?
陪伴而非守候

TA貢獻1757條經(jīng)驗 獲得超8個贊

今天只有一次,但您可以通過首先使用所需日期發(fā)出 POST 請求并重新加載頁面來獲得明天的時間。


例如:


import requests

from bs4 import BeautifulSoup



url = 'https://sport-tv-guide.live/live/darts'

select_date_url = 'https://sport-tv-guide.live/ajaxdata/selectdate'


with requests.session() as s:

    # print times for today:

    print('Times for today:')

    soup = BeautifulSoup(s.get(url).content, 'html.parser')

    for t in soup.select('.time'):

        print(t.get_text(strip=True, separator=' '))


    # select tomorrow:

    s.post(select_date_url, data={'d': '2020-07-19'}).text


    # print times for tomorrow:

    print('Times for 2020-07-19:')

    soup = BeautifulSoup(s.get(url).content, 'html.parser')

    for t in soup.select('.time'):

        print(t.get_text(strip=True, separator=' '))

印刷:


Times for today:

Darts 17:05

Times for 2020-07-19:

Darts 19:05

Darts 19:05


查看完整回答
反對 回復 2023-03-16
?
哈士奇WWW

TA貢獻1799條經(jīng)驗 獲得超6個贊

在獲得上述有用的答案后,我能夠確定問題是網(wǎng)站上存儲了一個 cookie,其中包含用戶選擇的國家/地區(qū)信息,以顯示運動日程數(shù)據(jù)。在這個例子中,澳大利亞的一個頻道在 18:00 有一個列表。由于從請求模塊收到的請求沒有 cookie 數(shù)據(jù),這最初沒有通過我上面的代碼顯示在輸出中。


我能夠通過以下代碼提供必要的 cookie 信息


def makesoup(url):

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

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

    return BeautifulSoup(r.text,"html.parser")

現(xiàn)在輸出了正確的信息

http://img1.sycdn.imooc.com//6412867f0001494002120066.jpg

只需發(fā)布此答案,以防將來幫助遇到類似問題的人。



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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號