Python+Selenium自動搜索基金業協會指定企業名單,爬蟲抓取指定信息並保存到數據庫

Python+Selenium自動搜索基金業協會指定企業名單,抓取指定信息並保存到數據庫.
網址https://gs.amac.org.cn/amac-infodisc/res/pof/manager/managerList.html
安裝使用Python+Selenium請點擊這個鏈接
# -*- coding: utf-8 -*-
# @Time : 2021/5/24
# @Author : Jihaibo
# @desc :Python+Selenium自動搜索基金業協會指定企業名單,抓取指定信息並保存到數據庫.網址https://gs.amac.org.cn/amac-infodisc/res/pof/manager/managerList.html
# @File : amacSelenium.py
# @Software: PyCharm

from selenium import webdriver #調用 Chrome 瀏覽器
from selenium.webdriver.common.keys import Keys #調用鍵盤按鍵操作需要引入keys 包
from selenium.webdriver.common.action_chains import ActionChains #鼠標事件
from selenium.webdriver.support import expected_conditions as EC #expected_conditions判斷當前頁面的是否有XX。由於這個模塊名稱比較長,所以爲了後續的調用方便,重新命名爲EC了
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait #顯性等待,程序每隔xx秒看一眼,如果條件成立了,則執行下一步,否則繼續等待,直到超過設置的最長時間
import os
import requests
import time
import hashlib
import json
import pymysql


#查詢要檢查的管理人(企業)名單目錄,fund_name是企業全稱
def mysql_sel():
    # 數據庫連接
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123', db='test')
    cur = conn.cursor()
    cur.execute("SELECT fund_name FROM `test`.`company`;")
    # print(cur.description)
    for row in cur:
        print(row[0])
        getlist(row[0])
        # getlist('北京友聯四方投資管理有限公司')
    cur.close()
    conn.close()


#插入新的數據庫 mysql_ins( 名稱, 信息報送異常, 登記時間, 成立時間, 註冊地址, 辦公地址, 管理規模區間, 產品信息) def mysql_ins( name1, yichang, djsj, clsj, zcdz, bgdz, glgmqj, chanpin): # 數據庫連接 conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123456', db='test') # 插入數據庫 sql_2 = f"INSERT INTO `test`.`amac_glr`( `name1`, `yichang`, `djsj`, `clsj`, `zcdz`, `bgdz`, `glgmqj`, `chanpin`) VALUES ( '{name1}', '{yichang}', '{djsj}', '{clsj}', '{zcdz}', '{bgdz}', '{glgmqj}', '{chanpin}')" cur2 = conn.cursor() cur2.execute(sql_2) # 執行上述sql命令 conn.commit() # print('成功') cur2.close() conn.close() #獲取管理人詳細信息 def getcon(href): print(href) opt = webdriver.ChromeOptions() # 創建Chrome參數對象 opt.headless = True # 把Chrome設置成可視化無界面模式,windows/Linux 皆可 b = webdriver.Chrome(options=opt) #把Chrome設置成可視化無界面模式 b.get(href) time.sleep(1) name1 = b.find_element_by_id("complaint2").text yichang = b.find_elements_by_xpath("//table/tbody/tr/td")[1].text djsj = b.find_elements_by_xpath("//div[@class='info-body']/div[2]/div[@class='table-response']/table/tbody/tr[5]/td")[1].text clsj = b.find_elements_by_xpath("//div[@class='info-body']/div[2]/div[@class='table-response']/table/tbody/tr[6]/td")[1].text zcdz = b.find_elements_by_xpath("//div[@class='info-body']/div[2]/div[@class='table-response']/table/tbody/tr[7]/td")[1].text bgdz = b.find_elements_by_xpath("//div[@class='info-body']/div[2]/div[@class='table-response']/table/tbody/tr[8]/td")[1].text glgmqj = b.find_elements_by_xpath("//div[@class='info-body']/div[2]/div[@class='table-response']/table/tbody/tr[18]/td")[1].text chanpin = b.find_elements_by_css_selector(".table")[8].text mysql_ins( name1, yichang, djsj, clsj, zcdz, bgdz, glgmqj, chanpin) # print(b.find_elements_by_css_selector(".table")[8].text) b.quit() # 獲取管理人搜索結果列表(自動搜索) def getlist(com_name): print(com_name) # 通過id方式定位,先清除掉關鍵詞 browser.find_element_by_id("keyword").clear() #通過id方式定位,輸入指定關鍵詞 browser.find_element_by_id("keyword").send_keys(com_name) #輸入關鍵詞後,點擊搜索按鈕 browser.find_elements_by_css_selector('.reset-btn.button')[0].click() time.sleep(1) try: #得到管理人網址 href = browser.find_element_by_xpath("//table[@id='managerList']/tbody/tr/td/a").get_property('href') getcon(href) except Exception as e: print(str(e)) browser = webdriver.Chrome() #打開谷歌 browser.implicitly_wait(20) # 隱性等待,最長等20秒 browser.get("https://gs.amac.org.cn/amac-infodisc/res/pof/manager/managerList.html") #輸入基協管理人地址 # 關閉彈出框遮罩按鈕 time.sleep(6) browser.find_element_by_class_name("layui-layer-btn0").click() #開始,數據庫查詢 mysql_sel() browser.quit()

服務器很便宜自己買個測試測試吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章