Selenium 抓取东方网数据(图)

测试工具 创建于:2022-02-07
  使用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)   不然他会请求会很快,以至于你虽然翻到第二页了,但是还是爬取第一页的信息!!  
 二、获取节点   
·解析网页的时候也要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)





  
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

来这里,成为51Testing签约原创作者!

原文地址:http://www.51testing.com/?action-viewnews-itemid-4481121

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

发表于:2022-2-07 09:21 作者:小生凡一 来源:稀土掘金