[英]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
来显示带有所选季节的表格。 可能无法通过requests
和BeautifulSoup
进行抓取。 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.