抓取网站网页信息中的TD信息

python 抓取某网站网页信息中的TD信息

通过用户名和密码直接登录到网站,然后下载相应的表格信息;或者直接抓取HTML页面中的table下tr的相关内容

  • 引入代码中需要的相关库或者类
import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from lxml import etree
from openpyxl import workbook
from openpyxl import load_workbook

import os
import pymongo
import threading
  • 创建mongodb数据库以及excel的workbook等对象
client = pymongo.MongoClient(host='localhost',port = 27017)
db = client.hello
collection = db['baby']
wb = workbook.Workbook()
ws = wb.active
###设置excel相关的表头信息
ws.append(['序号','姓名','性别','占比','班级','年级','备注'])
  • 解析网页相关信息使用selenium
###设置网站URL链接(以下链接为虚拟链接)
url = 'http://69.69.69.69/2000'
###调用webdriver驱动打开Chrmoe浏览器
browser = webdriver.Chrome()
wait = WebDriverWait(browser,20)
user='1111'
password = '888888'
###打开浏览器,获取用户名和密码输入框,输入相关信息后点击提交
browser.get(url)
username = wait.until(EC.presence_of_element_located((By.NAME,'userId')))
password = wait.until(EC.presence_of_element_located((By.NAME,'userPwd')))
submit = wait.until(EC.element_to_be_clickable((By.NAME,'Submit')))
username.send_keys(user)
password.send_keys('888888')
submit.click()

由于打开主页后左侧的树形选择结构不予显示,经过点击后发现需要执行JavaScript脚本方可加载

browser.execute_script("parent.treeCtl.showMenu('700000')")

打开主页后,由于网站中的关键信息均在frameset中,但是frameset中的frame并没有在网页代码段中显示,因此需要切换至相应frame

browser.switch_to.frame('leftFrame')

获取frame中可以点击的span标签进行点击

click1 = wait.until(EC.element_to_be_clickable((By.ID,'ygtvlabelel3')))
click1.click()

在切回到主界面,继续寻找显示frame中的table内容

browser.switch_to.default_content()
browser.switch_to.frame('mainFrame')

通过chrome浏览器定位到需要获取的tr字段然后复制XPATH路径,并通过browser获取到相应的elements列表

tr_list = browser.find_elements(By.XPATH,'//*[@id="mx1"]/tbody/tr')

获取列表中的td字段信息并保存到mongodb和excel当中

for tr in tr_list:
       #./确保在tr标签下面寻找td标签,而不是获取整个table标签下的字段
       td_list = tr.find_elements(By.XPATH,'./td')
             if len(td_list):
                 number = td_list[0].text
                 name = td_list[1].text
                 countno = td_list[2].text
                 leibie = td_list[3].text
                 zhanbi = td_list[4].text
                 yue = td_list[5].text
                 rijun = td_list[6].text
                 tiaomu = {
                        '序号' : number,
                        '姓名' : name,
                        '性别' : countno,
                        '占比' : leibie,
                        '班级' : zhanbi,
                        '年级' : yue,
                        '备注' : rijun
                        }
                 ####插入mongodb
                 collection.insert(tiaomu)
                 ####插入excel当中
                 ws.append([number,name,countno,leibie,zhanbi,yue,rijun])

切换到主界面然后点击下载按钮下载网站自身数据

browser.switch_to.default_content()
browser.switch_to.frame('mainFrame')
download = wait.until(EC.element_to_be_clickable((By.XPATH,'/html/body/div[4]/span[2]')))
download.click()

保存excel数据到指定的文件

excelname = 'hello.xlsx'
wb.save(excelname)

参考文献

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值