如何抓取只能通过Beautifulsoup页面上的菜单访问的表?

时间:2018-12-30 11:57:42

标签: python-3.x web-scraping beautifulsoup

我正在尝试使用python和BeautifulSoup刮擦仅在页面上的菜单中单击时在代码中可见的表。

我可以抓取在首次打开页面时默认可见的表。因此,我尝试使用id或页面调用来尝试相同的技术,但无法获取文本。这是页面(您可以通过表格顶部的菜单选择视图):

https://www.tabtouch.com.au/racing/2018-12-26/mr/1

我对“字段”视图感兴趣。这是我的代码:

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("https://www.tabtouch.com.au/racing/2018-12-26/mr/1")
soup = BeautifulSoup(html, "lxml")
mytable = soup.find('table', {'id': 'client-side-view'})
thetable = mytable.text
print(thetable)

使用'table', {'id': 'race-results'}(打开页面时可以看到的表格),它可以很好地工作。可以通过页面顶部的查看菜单访问所需的表,单击“字段”以查看它。

我希望得到报废比赛结果表的结果。

1 个答案:

答案 0 :(得分:0)

我将使用Selenium来单击这些菜单中的单击:

from selenium import webdriver
from selenium.webdriver.common.by import By
import bs4
import pandas as pd


url = "https://www.tabtouch.com.au/racing/2018-12-26/mr/1"

driver = webdriver.Chrome()
driver.get(url)


driver.find_element(By.XPATH, '//*[@id="race-results"]/thead/tr[1]/th[1]/race-betting-menu/div/p/a').click()
driver.find_element(By.XPATH, '//*[@id="race-results"]/thead/tr[1]/th[1]/race-betting-menu/div/ul/li[2]/a').click()

html = driver.page_source
soup = bs4.BeautifulSoup(html, "html.parser")

mytable = soup.find('table', {'id': 'client-side-view'})
thetable = mytable.text
print(thetable)