利用 Python + Selenium实现爬虫抓取表格数据(二) 简介
2021/7/20 13:05:48
本文主要是介绍利用 Python + Selenium实现爬虫抓取表格数据(二) 简介,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
距离上一次写爬虫的blog已经是一个月前了,那么今天我们接着往下写如何利用爬虫抓取表格数据并保存到excel中,这一次我换了一个内部写的Sample接下来看实现细节部分。
实现细节
还是在原来的login.py
文件中引入pandas
分析结构化数据的工具集
import pandas as pd
from openpyxl import load_workbook
引入之后我们就可以根据上一篇中利用 Python + Selenium实现爬虫模拟登录(一)中登录
self.browser.find_element_by_name('commit').click() # 登录
time.sleep(1) #
登录成功之后真的成功的页面进行节点解析,模拟打开左边侧栏的层级
# 定位到第一层级
span_tags = self.browser.find_elements_by_xpath('//span[text()="用户"]')
span_tags[0].click()
# 打开微信用户页面
a_tags = self.browser.find_elements_by_xpath('//a[@href="/admin/wxusers"]')
a_tags[0].click()
通过上方的代码,我们就把侧边栏的内容彻展开并打开了页面,接下来最重要的代码来了 由于本次所写的内部Sample不是前后端分离的就需要获取页面当中的页数,通过一下代码进行获取总页数:
b_tags = self.browser.find_element_by_class_name('pagination.page.width-auto').find_elements_by_tag_name('b')
pageSize = int(b_tags[1].text)
获取页数之后就需要对我们的页面进行一个for
循环:
row = 10 # 记录每次写入Excel的行数
for i in range(pageSize):
循环的里边进行定位表格并获取表格的内容
lst = [] # 将表格的内容存储为list
element = self.browser.find_element_by_tag_name('tbody') # 定位表格
# 提取表格内容td
tr_tags = element.find_elements_by_tag_name("tr") # 进一步定位到表格内容所在的tr节点
for tr in tr_tags:
td_tags = tr.find_elements_by_tag_name('td')
for td in td_tags[:4]: #只提取前4列
lst.append(td.text) #不断抓取的内容新增到list当中
提取到第一页的内容之后,将内容进行分割并连续保存到Excel当中
# 确定表格列数
col = 4
# 通过定位一行td的数量,可获得表格的列数,然后将list拆分为对应列数的子list
lst = [lst[i:i + col] for i in range(0, len(lst), col)]
# list转为dataframe
df = pd.DataFrame(lst) # 列表数据转为数据框
#等于1 表示当前是第一条数据,直接省成Excel
if i == 0:
df.to_excel('demo.xlsx', sheet_name='sheet_1', index=False,header=False)
#在现有的文件当中新增内容并保存
book = load_workbook('demo.xlsx')
writer = pd.ExcelWriter('demo.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, sheet_name='sheet_1', index=False,startrow=row,header=False)
writer.save()
time.sleep(1) # 停顿一秒是以防把本地的Sample并发过高
row = row + 10 # 记录存储Excel的行数
内容保存之后点击下页,如此类推直到循环停止我们的数据也就抓取完成的
# 点击下一页
self.browser.find_element_by_class_name('next').click()
验证并进行测试
以上是本次所抓取保存下来的内容。 目前第二篇我并没有录制视频,希望小伙伴自行验证,但可以保证的就是这些都是本人亲测通过的代码。
作者:qingwenLi
这篇关于利用 Python + Selenium实现爬虫抓取表格数据(二) 简介的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程