网络爬行到表



我想在以下网站上抓取表格 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()

该脚本打印表中的所有文本并退出。

最新更新