我正在尝试抓取该网站上的网络数据,而我能够访问数据的唯一方法是迭代表的行,将它们添加到列表中(然后将它们添加到 pandas 数据框/写入csv),然后单击下一页并重复该过程 [每次搜索大约 50 页,我的程序执行 100 多个搜索]。它非常慢/效率低下,我想知道是否有一种方法可以使用 pandas 或 beautiful soup 有效地添加所有数据,而不是迭代每行/列。
url = "https://claimittexas.org/app/claim-search 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 版本中,我放入了一堆 print 语句来查看出了什么问题,并且 rows 值只是一个空列表
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())
在 BS4 代码实现中使用这一行
rows = soup.find('table').find('tbody').find_all('tr')[1:]
代替
rows = soup.find('table').find('tbody').find_all(('tr')[1:])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)