簡體   English   中英

網絡爬行到桌子

[英]Web-Crawling down to a table

我希望在以下網站上抓取表格:https://www.pro14rugby.org/match-centre/results

有一個小部件可以在季節之間切換。 在此窗口小部件切換器之后,所有數據都保存在表中。

我提取的html只能到達小部件切換器。

我是網絡爬蟲的新手,因此歡迎向正確的方向發展。

我查看了網絡,看是否有一個網址可以讓我通過這一點。

def download(url, user_agent='<My_Email>', num_retries=2):

    print('Downloading:', url)
    headers = {'User-Agent': user_agent}
    try:
        resp = requests.get(url, headers=headers)
        html = resp.text
        if resp.status_code >= 400:
            print('Download error:', resp.text)
            html = None
            if num_retries and 500 <= resp.status_code < 600:
                # recursively retry 5xx HTTP errors
                return download(url, num_retries - 1)
    except requests.exceptions.RequestException as e:
        print('Download error:', e)
        html = None
    return html

page='https://www.pro14rugby.org/match-centre/results'

html=download(page)

期望看到帶有代碼路徑的html代碼,正如我在檢查時所看到的。 我了解該小部件是動態的,因此有意義的是,我需要在代碼中輸入條件以獲取每個季節。 任何這樣做的建議都將受到歡迎。

謝謝

該網站使用jQuery來顯示帶有所選季節的表格。 可能無法通過requestsBeautifulSoup進行抓取。 Selenium可以用於刮擦文本,如下所示:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time

driver = webdriver.Firefox()
driver.maximize_window()

driver.get("https://www.pro14rugby.org/match-centre/results")

for i in range(18):
    s= Select(driver.find_element_by_class_name('widgetSwitcher'))
    s.select_by_index(i)
    time.sleep(6)
    val = driver.find_element_by_class_name('sotic-widget').text
    print(val.replace('REPORT',''))

driver.quit()

該腳本將打印表中的所有文本並退出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM