从<div>标签组成的网页中抓取表格

时间:2020-06-24 05:25:49

标签: python selenium web-scraping

我需要从下面的link中抓取表格。

我用硒编写了一个脚本,该脚本可以单击下一页,但是每页中的表似乎没有table标记。相反,它似乎仅包含div标签。我发现很难通过该网站刮擦桌子。任何帮助都会非常感激。

from selenium import webdriver
import time

url = "https://mahabocw.in/safety-kit-benefits-distribution/"
driver = webdriver.Chrome()
driver.get(url)

next_button = '/html/body/div/div[6]/div/article/div/div/div/div/div[2]/div/div/div[2]/div/div[4]/span[2]/div[3]/button'
click_next = driver.find_element_by_xpath(next_button)
click_next.click()

编辑1

我刚刚观察到,当我单击一行时,我能够将以前的所有行以及它作为csv下载。 exporting as csv

但是问题是go to last page按钮在这里不起作用。因此,我必须单击下一页按钮。我使用了硒脚本来单击以连续浏览页面,但是浏览了大约50页左右后它不起作用。我想点击进入最后一页,然后将其导出为csv。

from selenium import webdriver
import time

url = "https://mahabocw.in/safety-kit-benefits-distribution/"
driver = webdriver.Chrome()
driver.get(url)

for i in range(1000000):
    next_button = '/html/body/div[1]/div[6]/div/article/div/div/div/div/div[2]/div/div/div[2]/div/div[4]/span[2]/div[3]/button'
    click_next = driver.find_element_by_xpath(next_button)
    click_next.click()

这是我用来尝试到达最后一页的完整代码。另外,我也不知道该网站的总页数。

谢谢。

1 个答案:

答案 0 :(得分:0)

对于“>”按钮,您可以使用较短的xpath:

//button[text() = 'Next']

对于表数据,我将用类似于C#的代码编写:

var result = new List<List<string>>();
var rows = WebDriver.FindElements("//div[@role = 'row' and @row-index and div]");
foreach (var row in rows)
{
   var rowData = new List<string>();
   var cells = row.FindElements("/div");

   foreach (var cell in cells) rowData.Add(cell.Text);
   result.Add(rowData);
}