使用熊猫/美丽汤(而不是硒慢的硒)刮擦表格数据,BS实施不起作用

时间:2018-06-30 01:50:02

标签: pandas selenium numpy selenium-webdriver beautifulsoup

我试图在此网站上抓取网络数据,而访问数据的唯一方法是遍历表中的行,将其添加到列表中(然后将其添加到pandas数据框/写入csv),然后单击下一页并重复该过程[每次搜索大约有50页,而我的程序进行了100多次搜索]。这是超级慢/效率低下的问题,我想知道是否有一种方法可以使用熊猫或漂亮的汤有效地添加所有数据,而不是遍历每行/每列。

url =“ https://claimittexas.org/app/claim-search

rows = driver.find_elements_by_xpath("//tbody/tr")
    try:
        for row in rows[1:]:
            row_array = []
            #print(row.text) # prints the whole row
            for col in row.find_elements_by_xpath('td')[1:]:
                row_array.append(col.text.strip())
            table_array.append(row_array)
        df = pd.DataFrame(table_array)
        df.to_csv('my_csv.csv', mode='a', header=False)
    except:
        print(letters + "no table exists")

编辑:我尝试使用漂亮的汤刮,这是我在本周早些时候尝试过并发布的内容,但是如果不使用硒,我似乎无法访问表格

在bs版本中,我放入了一堆打印语句以查看出了什么问题,并且它的行值只是一个空列表

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
rows = soup.find('table').find('tbody').find_all(('tr')[1:])
for row in rows[1:]:
    cells = row.find_all('td')
    for cell in cells[1:]:
        print(cell.get_text())

1 个答案:

答案 0 :(得分:0)

在BS4代码实现中使用此行

rows = soup.find('table').find('tbody').find_all('tr')[1:]

代替

rows = soup.find('table').find('tbody').find_all(('tr')[1:])