侧边栏壁纸
博主头像
口鸟人 博主等级

言念君子 . 温其如玉

  • 累计撰写 39 篇文章
  • 累计创建 16 个标签
  • 累计收到 14 条评论

目 录CONTENT

文章目录

python自动化web

koniaoer
2024-05-22 / 0 评论 / 2 点赞 / 114 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-05-22,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一.使用selenium模块进行天气网数据爬取

from selenium import webdriver
#调用selenium的webdriver模块
from selenium.webdriver.common.by import By
#调用by模块,定位web中的元素
import time
#延迟时间模块
from selenium.webdriver.common.keys import Keys
#防键盘输入模块
import pymysql
#链接pymysql模块

#数据库数据
'''
drop database if exists weather;
create database weather;
use weather;

create table wea(
    农历 char(3) not null comment'农历' ,
    阳历 char(3) not null comment'阳历',
    温度 char(20) comment'温度',
    湿度 char(4) comment'湿度',
    数据来源 char(5) comment'数据来源'
);
'''

cnx = pymysql.connect(  
    host='127.0.0.1',       #主机地址
    user='root',            #mysql用户名
    password='123456',      #mysql密码
    port=3306,              #mysql开放端口
    db='weather'   ,        #mysql创建的库名
    charset='utf8',         
)  
cur = cnx.cursor()
#链接数据库,创建一个游标

inserts=[]
#创建一个列表,用来保存你所需要的数据
driver = webdriver.Edge()
#打开搜索引擎
#driver.maximize_window()   放大窗口
driver.get("https://www.baidu.com/")
#使用百度搜索

time.sleep(0.5)
#防止web元素没有加载出来,延迟0.5秒
driver.find_element(By.ID, "kw").send_keys("天气网"+Keys.ENTER)
#搜索天气网,使用keys模块输入

time.sleep(2)

wins = driver.window_handles
driver.switch_to.window(wins[-1])
#切换窗口,打开一个链接后,如果创建了一个新的图窗就必须切换窗口

driver.find_element(By.XPATH,"/html/body/div[3]/div[3]/div[1]/div[3]/div[3]/div[1]/div[1]/h3/a").click()
#根据元素寻找你要点击的部位,使用click仿用户点击

time.sleep(5)

wins = driver.window_handles  
driver.switch_to.window(wins[-1])


driver.find_element(By.CLASS_NAME, "showCalendar").click()
#在天气网中点击地区

time.sleep(5)

wins = driver.window_handles
driver.switch_to.window(wins[-1])


time.sleep(5)

wins = driver.window_handles
driver.switch_to.window(wins[-1])

time.sleep(5)

tbody = driver.find_elements(By.TAG_NAME,"tbody")
#查找tboby元素
for trs in tbody:
#遍历tbody找出trs
    for tds in trs.find_elements(By.TAG_NAME,"td"):
#遍历trs找出td元素
        if tds.text != '':
#防止空数据输入
            lines = tds.text.split('\n')
            inserts.append(lines[:5])
#把需要的数据导入到inserts列表中

sql = "INSERT INTO wea (农历, 阳历, 温度, 湿度, 数据来源) VALUES (%s, %s, %s, %s, %s)"
#列好表格格式
cur.executemany(sql, inserts)  
#批量导入
cnx.commit()  

print("数据添加成功")  
            
time.sleep(10)

cur.close() 
cnx.close()

2

评论区