多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium抓取东方网数据-接口自动化测试

更新时间:2022-03-08 10:00:34 作者:多测师 浏览:121

  使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。

  候选网站:东方财富网:quote.eastmoney.com/center/grid…

  思路

  一、发送请求

  ·引入驱动

  chrome_path = r"D:\Download\Dirver\chromedriver_win32\chromedriver_win32\chromedriver.exe" # 驱动的路径

  browser = webdriver.Chrome(executable_path=chrome_path)

  ·保存需要爬取的版块

  target = ["hs_a_board", "sh_a_board", "sz_a_board"]

  target_name = {"hs_a_board": "沪深A股", "sh_a_board": "上证A股", "sz_a_board": "深证A股"}

  计划是爬取三个模板的两页信息。

  ·发送请求

  for k in target:

  browser.get('http://quote.eastmoney.com/center/gridlist.html#%s'.format(k))

  for i in range(1, 3):

  print("-------------第{}页---------".format(i))

  if i <= 1:

  get_data(browser, target_name[k])

  browser.find_element_by_xpath('//*[@id="main-table_paginate"]/a[2]').click() # 翻页

  time.sleep(2)

  else:

  get_data(browser, target_name[k])

  注意:这里的翻页一点要time.sleep(2)

  不然他会请求会很快,以至于你虽然翻到第二页了,但是还是爬取第一页的信息!!

Selenium抓取东方网数据-接口自动化测试

  二、获取节点

  ·解析网页的时候也要implicitly_wait等待一下

  browser.implicitly_wait(10)

  items = browser.find_elements_by_xpath('//*[@id="table_wrapper-table"]/tbody/tr')

  然后这个items就是所以的信息了。

  for item in items:

  try:

  info = item.text

  infos = info.split(" ")

  db.insertData([infos[0], part, infos[1], infos[2],

  infos[4], infos[5],

  infos[6], infos[7],

  infos[8], infos[9],

  infos[10], infos[11],

  infos[12], infos[13],

  ])

  except Exception as e:

  print(e)

  三、保存数据

  ·数据库类,封装了初始化和插入操作

  class database():

  def __init__(self):

  self.HOSTNAME = '127.0.0.1'

  self.PORT = '3306'

  self.DATABASE = 'scrapy_homeword'

  self.USERNAME = 'root'

  self.PASSWORD = 'root'

  # 打开数据库连接

  self.conn = pymysql.connect(host=self.HOSTNAME, user=self.USERNAME, password=self.PASSWORD,

  database=self.DATABASE, charset='utf8')

  # 使用 cursor() 方法创建一个游标对象 cursor

  self.cursor = self.conn.cursor()

  def insertData(self, lt):

  sql = "INSERT INTO spider_gp(序号,板块,股票代码 , 股票名称 , 最新报价 ,涨跌幅 ,涨跌额,成交量,成交额 , 振幅, 最高 , 最低 , 今开 , 昨收 ) " \

  "VALUES (%s,%s, %s, %s, %s, %s,%s, %s, %s, %s, %s,%s,%s,%s)"

  try:

  self.conn.commit()

  self.cursor.execute(sql, lt)

  print("插入成功")

  except Exception as err:

  print("插入失败", err)

  以上内容为大家介绍了Selenium 抓取东方网数据-接口自动化测试,本文由多测师亲自撰写,希望对大家有所帮助。了解更多接口自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部