当前位置: 首页 > 知识库问答 >
问题:

使用Pandas/Beautiful Shoum(而不是selenium哪个慢?)刮表数据,BS实现不起作用

巫马刚洁
2023-03-14

我试图在这个网站上搜索web数据,我能够访问数据的唯一方法是遍历表的行,将它们添加到列表中(然后将它们添加到pandas数据框架中/写入csv),然后单击下一页并重复这个过程[每次搜索大约有50页,我的程序进行100+次搜索]。它非常慢/效率低,我想知道是否有一种方法可以使用pandas或Beautive soup高效地添加所有数据,而不是遍历每一行/每列。

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")
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个答案

暨成双
2023-03-14

在BS4代码内嵌中使用这一行

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

而不是

rows = soup.find('table').find('tbody').find_all(('tr')[1:])
 类似资料:
  • 我对使用python有点陌生,我接到了一个任务,需要从表中抓取数据。我也不太懂html。我以前从来没有这样做过,花了几天时间研究各种刮桌子的方法。不幸的是,所有的例子都是一个看起来比我所处理的更简单的网页布局。我尝试了很多不同的方法,但没有一种方法允许我选择所需的表数据。 下面网页底部的“每日水位”选项卡下的表怎么刮? url=https://apps.wrd.state.or.us/apps/g

  • 能否有人请让我知道如果有任何问题与这个实现。 下面是我如何将节点添加到列表中:

  • 问题内容: 我想我将重新提出我的问题 您应该在哪里使用BlockingQueue实现而不是Simple Queue实现? 至 考虑到速度,并发性或其他属性(例如,访问最后一个元素的时间)等方面,BlockingQueue与Queue实现相比的优缺点是什么? 我已经使用了两种队列。我知道阻塞队列通常在并发应用程序中使用。我正在编写简单的ByteBuffer池,其中需要一些用于ByteBuffer对象

  • 我试图使用Selenium从代码中获得jpg。我已经设法找到了链接点击获得我的jpg所在的位置。(真倒霉!我刚接触硒)。所有的窗户都随着它的点击而打开。与刮刮乐相比,它真的很慢,所以如果有人能告诉我一个更快的方法,那就太好了。 我试图搜索的网站是www.rosegal.com。我正在刮的类别是大尺寸的背心。这第一页有60个产品在它。如果单击这些产品,它会将您带到一个产品页面,在该页面上您可以选择所

  • 问题内容: 正则表达式似乎还可以,因为第一行将子字符串正确替换为“ helloworld”,但是后者却不匹配,因为我看不到“ whynothelloworld?”。在控制台上 问题答案: 期望 整个 字符串匹配,而不仅仅是子字符串。 使用正则表达式匹配器对象的方法代替:

  • 问题内容: 我的代码的目的是导入2个Excel文件,对其进行比较,然后将差异打印到新的Excel文件中。 但是,在连接所有数据并使用该功能之后,控制台将接受该代码。但是,当打印到新的excel文件时,重复副本仍会在当天保留。 我想念什么吗?是某种使功能无效的东西吗? 我的代码如下: 问题答案: 您已经拥有了,所以您没有进行修改。你想要 要么