【发布时间】:2020-04-27 13:53:16
【问题描述】:
我正在尝试从一个网页上抓取一堆表格,使用下面的代码,我可以获得一个表格,并且输出可以用 pandas 正确显示,但我一次不能获得多个表格。
import bs4 as bs
import urllib.request
import pandas as pd
source = urllib.request.urlopen('https://www.URLHERE.com').read()
soup = bs.BeautifulSoup(source, 'lxml')
tables = soup.select('table')[-1]
rows = tables.find_all('tr')
output = []
for rows in rows:
cols = rows.find_all('td')
cols = [item.text.strip() for item in cols]
output.append([item for item in cols if item])
df = pd.DataFrame(output, columns = ['1','2', '3', '4', '5', '6'])
df = df.iloc[1:]
print(df)
如果我从表变量中删除 [-1],则会收到以下错误。
AttributeError: 'list' object has no attribute 'find_all'
我需要进行哪些更改才能将所有表格从页面中移除?
【问题讨论】:
-
也许是这样来获取所有表格:
tables = soup.find_all('table')? -
我已经尝试过了,然后我得到一个不同的错误,AttributeError: ResultSet object has no attribute 'find_all'。您可能将项目列表视为单个项目。当您打算调用 find() 时,您是否调用了 find_all()?我是网络抓取的新手,并且对 python 也很熟悉,所以这也有助于我的挣扎
标签: python html pandas web-scraping beautifulsoup