第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

利用 Python + Selenium實(shí)現(xiàn)爬蟲抓取表格數(shù)據(jù)(二) 簡(jiǎn)介

標(biāo)簽:
Python 爬蟲

简介

距离上一次写爬虫的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()

https://img1.sycdn.imooc.com/60f5ad110001b20e14140940.jpg

通过上方的代码,我们就把侧边栏的内容彻展开并打开了页面,接下来最重要的代码来了 由于本次所写的内部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()


验证并进行测试

https://img1.sycdn.imooc.com/60f5ad970001fff415760832.jpg 以上是本次所抓取保存下来的内容。 目前第二篇我并没有录制视频,希望小伙伴自行验证,但可以保证的就是这些都是本人亲测通过的代码。

作者:qingwenLi


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消