爬取网页地址:

       丁香医生

数据库连接代码:
       
def db_connect():
try:
db=pymysql.connect('localhost','root','zzm666','payiqing')
print('database connect success')
return db
except Exception as e:
raise e
return 0

爬取代码:

  

def pa_website(db):
driver = webdriver.Chrome()
driver.get('https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0')
time.sleep(5)#页面渲染等待,保证数据完整性
driver.find_element_by_xpath('//*[@id="root"]/div/div[4]/div[9]/div[21]').click()#点击更多数据,页面数据未加载完
divs=driver.find_elements_by_xpath('//*[@id="root"]/div/div[4]/div[9]/div[@class="fold___85nCd"]')#找到要爬取的数据上一次代码路径
cursor = db.cursor()
for div in divs:
address=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[1]').text)
confirm_issue=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[2]').text)
all_confirm=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[3]').text)
dead=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[4]').text)
cure=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[5]').text)
with open('data.csv','a',newline="") as csvfile:#创建data.csv文件,(推荐采用这种方式)
writer=csv.writer(csvfile,delimiter=',')
writer.writerow([address,confirm_issue,all_confirm,dead,cure])
sql="insert into info(id,address,confirm_issue,all_confirm,dead,cure)values ('%d','%s','%s','%s','%s','%s')"%(0,address,confirm_issue,all_confirm,dead,cure)
try:
cursor.execute(sql)
db.commit()
print('数据插入成功')
except Exception as e:
raise e
db.close()

爬取流程:

  1.获取目标网址

  2.获取上一级目标路径

  3.遍历路径下的目标

  4.获取数据信息

  5.生存csv文件展示(可以省略)

  6.插入数据库

  7.当数据全部插入后,关闭数据库

附(总源码+程序截图):

  

import csv

import requests
from selenium import webdriver
import pymysql
import time
from selenium.webdriver import ActionChains #动作链,滑动验证码登录
def db_connect():
try:
db=pymysql.connect('localhost','root','zzm666','payiqing')
print('database connect success')
return db
except Exception as e:
raise e
return 0
def pa_website(db):
driver = webdriver.Chrome()
driver.get('https://ncov.dxy.cn/ncovh5/view/pneumonia?from=timeline&isappinstalled=0')
time.sleep(5)
driver.find_element_by_xpath('//*[@id="root"]/div/div[4]/div[9]/div[21]').click()
divs=driver.find_elements_by_xpath('//*[@id="root"]/div/div[4]/div[9]/div[@class="fold___85nCd"]')
cursor = db.cursor()
for div in divs:
address=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[1]').text)
confirm_issue=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[2]').text)
all_confirm=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[3]').text)
dead=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[4]').text)
cure=str(div.find_element_by_xpath('.//div[@class="areaBlock1___3qjL7"]/p[5]').text)
with open('data.csv','a',newline="") as csvfile:
writer=csv.writer(csvfile,delimiter=',')
writer.writerow([address,confirm_issue,all_confirm,dead,cure])
sql="insert into info(id,address,confirm_issue,all_confirm,dead,cure)values ('%d','%s','%s','%s','%s','%s')"%(0,address,confirm_issue,all_confirm,dead,cure)
try:
cursor.execute(sql)
db.commit()
print('数据插入成功')
except Exception as e:
raise e
db.close()
def main():
db = db_connect()
pa_website(db)
if __name__=="__main__":
main()

  

    


使用selenium再次爬取疫情数据(链接数据库)的更多相关文章

  1. 爬取疫情数据,以django+pyecharts实现数据可视化web网页

    在家呆着也是呆着,不如做点什么消磨时间呗~ 试试用django+pyecharts实现疫情数据可视化web页面 这里要爬疫情数据 来自丁香园.搜狗及百度的疫情实时动态展示页 先看看劳动成果: 导航栏: ...

  2. selenium爬虫 | 爬取疫情实时动态(二)

    '''@author:Billie更新说明:1-28 17:00 项目开始着手,spider方法抓取到第一条疫情数据,save_data_csv方法将疫情数据保存至csv文件1-29 13:12 目标 ...

  3. python爬取疫情数据详解

    首先逐步分析每行代码的意思: 这是要引入的东西: from os import path import requests from bs4 import BeautifulSoup import js ...

  4. 利用Python爬取疫情数据并使用可视化工具展示

    import requests, json from pyecharts.charts import Map, Page, Pie, Bar from pyecharts import options ...

  5. selenium爬虫 | 爬取疫情实时动态

    import csvimport selenium.webdriverfrom selenium.webdriver.chrome.options import Optionsclass spider ...

  6. python爬取疫情数据存入MySQL数据库

    import requests from bs4 import BeautifulSoup import json import time from pymysql import * def mes( ...

  7. 使用selenium进行爬取掘金前端小册的数据

    Selenium 简介 百度百科介绍: Selenium [1] 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, ...

  8. 使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)

    urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...

  9. [python爬虫] Selenium定向爬取PubMed生物医学摘要信息

    本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容.        PubMed是一个免费的搜寻引擎,提供生物医学方 ...

随机推荐

  1. 数据可视化之PowerQuery篇(七)Power Query应用技巧:批量更改列名

    https://zhuanlan.zhihu.com/p/130460772 ​今天分享一个PowerQuery的小技巧,导入到PowerBI中的数据,如果想要更改数据的列名,可以在PQ编辑器中直接双 ...

  2. 使用OpenCV对图片进行特征点检测和匹配(C++)

    背景 最近从不同网站下载了非常多的动漫壁纸,其中有一些内容相同,但是大小.背景颜色.色调.主人公的位置不同(例子如下).正因为如此,基础的均方误差.直方图检测等方法很难识别出这些相似的图片. 思路 O ...

  3. NameBeta - 多家比价以节省咱的域名注册成本

    共收录 1584 种顶级域名,汇集互联网上 29 家知名域名注册商,每日更新价格信息 有的域名还可以查出到期时间点我前往官网 NameSilo1美元优惠码:whatz

  4. Spring框架零基础学习(一):IOC|DI、AOP

    文章目录 一.IDEA创建Spring项目 二.Spring: IOC和DI 三.Spring: AOP 参考链接: HOW2J.CN:Spring idea创建一个spring项目 一.IDEA创建 ...

  5. CppUnit使用和源码解析

    前言 CppUnit是一个开源的单元测试框架,支持Linux和Windows操作系统,在linux上可以直接进行源码编译,得到动态库和静态库,直接链接就可以正常使用,在Windows上可以使用VC直接 ...

  6. 题解 洛谷 P5324 【[BJOI2019]删数】

    先考虑对于一个序列,能使其可以删空的的修改次数. 首先可以发现,序列的排列顺序是没有影响的,所以可以将所有数放到桶里来处理. 尝试对一个没有经过修改的可以删空的序列来进行删数,一开始删去所有的\(n\ ...

  7. element上传功能携带参数

    在写element的上传功能时,需要对上传的文件携带参数,但是参数比较多,就需要一个对象合并的方法,Object.assign() Object.assign(target, source1, sou ...

  8. python迭代器和装饰器

    一.迭代器 1.迭代器协议:对象必须提供一个__next__()方法,执行该方法要么返回迭代中的下一个对象,要么引起一个StopIteration异常以终止迭代,迭代只能向后进行不能往前回退 2.可迭 ...

  9. Java复习总结(二)Java SE 面试题

    Java SE基础知识 目录 Java SE 1. 请你谈谈Java中是如何支持正则表达式操作的? 2. 请你简单描述一下正则表达式及其用途. 3. 请你比较一下Java和JavaSciprt? 4. ...

  10. Linux阶段总结

    Linux总结 一.学习心得: 在学习本阶段关于Linux阶段的课程时,让我对Linux有了一个大概的了解. 我了解到Linux操作系统是基于最初的Unix系统而开发出来的: 在学习Linux的时候, ...