zoukankan      html  css  js  c++  java
  • python爬取某查查用selenium终于搞定了!

    原文链接

    之前试过用request的方法爬取企查查, 结果完全获取不到信息。经论坛朋友们指点,找到selenium神器,学了两天,终于可以啦!
    怕被封号,所以设置了很多等待时间,爬取速度比较慢。


    代码如下:

    [Python] 纯文本查看 复制代码
    001
    002
    003
    004
    005
    006
    007
    008
    009
    010
    011
    012
    013
    014
    015
    016
    017
    018
    019
    020
    021
    022
    023
    024
    025
    026
    027
    028
    029
    030
    031
    032
    033
    034
    035
    036
    037
    038
    039
    040
    041
    042
    043
    044
    045
    046
    047
    048
    049
    050
    051
    052
    053
    054
    055
    056
    057
    058
    059
    060
    061
    062
    063
    064
    065
    066
    067
    068
    069
    070
    071
    072
    073
    074
    075
    076
    077
    078
    079
    080
    081
    082
    083
    084
    085
    086
    087
    088
    089
    090
    091
    092
    093
    094
    095
    096
    097
    098
    099
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    from selenium import webdriver
    import time
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.common.keys import Keys
    import xlrd
    from xlutils.copy import copy
    import random
     
    ####################################模拟使用IE浏览器登陆####################################
    option = webdriver.IeOptions()
    option.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"')
    path = 'C:Program Files (x86)Internet ExplorerIEDriverServer.exe'
    driver = webdriver.Ie(executable_path=path, options=option)
    driver.implicitly_wait(10)
     
     
    ####################################通过名称获取网页####################################
    #打开搜索页
    driver.get('https://www.qcc.com/search?key=%E6%B1%9F%E5%AE%81%E5%8E%BF%E8%93%9D%E5%A4%A9%E7%A0%96%E5%8E%82')
    time.sleep(20# 20s内手动登录
    #输入搜索词
    #corps = ['广州海洋勘探开发总公司', '广东车海洋环保科技有限公司', '广东粤新海洋工程装备股份有限公司', '广东省海洋工程职业技术学校(广东省海洋工程技工学校)',]
             #'广东华风海洋信息系统服务有限公司', '广州海洋天网科技股份有限公司', '中船海洋与防务装备股份有限公司', '广州海洋生物科普有限公司']
    for i in range(0, len(corps)):
        corp = corps[i]
        #清空搜索框
        driver.find_element_by_id('headerKey').clear()
        #向搜索框输入搜索词
        driver.find_element_by_id('headerKey').send_keys(corp)
        time.sleep(6)
        try:
            #获取公司链接
            link = driver.find_element_by_xpath('//a[@class="list-group-item keyMoveItem"]').get_attribute("href")
            #打开公司链接
            driver.get(link)
            time.sleep(6)
        except:
            print(corp + ':未查找到信息!')
     
    ####################################获取信息####################################
        #获取子界面
        elements = driver.find_elements_by_class_name('company-nav-head')
        for element in elements:
            ele = element.get_attribute('href')
            #点击基本信息
            if 'base' in ele:
                element.click()
                #获取公司名称
                corpname = driver.find_element_by_xpath('//div[@class="row title jk-tip"]/h1').text
                #获取所属行业
                try:
                    hangye = driver.find_element_by_xpath('//table[@class="ntable"]//tr[4]/td[6]').text
                except:
                    hangye = 'None'
                #获取人员规模
                try:
                    renyuan = driver.find_element_by_xpath('//table[@class="ntable"]//tr[6]/td[2]').text
                except:
                    renyuan = 'None'
                #获取经营范围
                try:
                    jingying = driver.find_element_by_xpath('//table[@class="ntable"]//tr[9]/td[2]').text
                except:
                    jingying = 'None'
                #获取标签
                try:
                    tags = driver.find_elements_by_xpath('//div[@class="row tags"]/span')
                    tagname = []
                    for tag in tags:
                        tagname.append(tag.text)
                    tagname = "、".join(tagname)
                except:
                    zl = "None"
                #print(corpname + '-'+ hangye + '-'+ renyuan + '-'+ jingying + '-'+ tagname)
            #点击专利信息
            elif 'assets' in ele:
                element.click()
                #获取科技创新含量
                try:
                    techscore = driver.find_element_by_xpath('//div[@class="zlchart-tcount"]/span').text
                except:
                    techscore = "None"
                #获取专利数量
                try:
                    zlcount = driver.find_element_by_xpath('//aspan[@class="title"]/span[@class="tbadge"]').text
                except:
                    zlcount = "None"
                #获取专利信息
                try:
                    zlments = driver.find_elements_by_xpath('//section[@id="zhuanlilist"]//table[@class="ntable ntable-odd"]//tr/td[5]')
                    zls = []
                    for zlment in zlments:
                        zls.append(zlment.text)
                    zl = "、".join(zls)
                except:
                    zl = "None"
                #print(corpname + '-' + techscore + '-' + zlcount + '-' + zl)
            else:
                pass
            time.sleep(4)
     
    ####################################保存信息####################################
        #保存到excel中
        rexcel = xlrd.open_workbook("C:/Users/SNT/Desktop/qcc.xls")
        table = rexcel.sheets()[0# 打开第一个sheet
        rows = table.nrows  # 获取行数
     
        # 用xlutils方法追写excel
        excel = copy(rexcel)  # 用xlutis提供的copy方法将xlrd对象转化为xlwt对象
        sheet = excel.get_sheet(0# 获取第一个sheet
        sheet.write(rows, 0, rows)
        sheet.write(rows, 1, corpname)
        sheet.write(rows, 2, tagname)
        sheet.write(rows, 3, hangye)
        sheet.write(rows, 4, renyuan)
        sheet.write(rows, 5, jingying)
        sheet.write(rows, 6, techscore)
        sheet.write(rows, 7, zlcount)
        sheet.write(rows, 8, zl)
        sheet.write(rows, 9, corp)
     
        excel.save("C:/Users/SNT/Desktop/qcc.xls")
        print(corp +'信息保存完毕!')
        sltime = 30*random.random()
        print('休息' + str(sltime) +'s...... ')
        time.sleep(sltime)
     
     
    print(str(i+1) +'家公司信息保存完毕')
     
    #关闭浏览器
    driver.quit()




    运行结果:

     

    免费评分

  • 相关阅读:
    fedora如何删除某个包且不删除依赖它的相关包
    git分支切换时的时间戳问题
    [Centos] ERROR: Could not find useradd in chroot, maybe the install failed?
    linux通过python设置系统默认编码
    linux设置系统时间和时区
    python: "TypeError: 'type' object is not subscriptable"
    如何搭建http服务仓库
    [转载]RPM中SPEC常用路径以及宏变量
    spec文件写作规范
    GeoServer中利用SLD配图之矢量图层配图
  • 原文地址:https://www.cnblogs.com/jscs/p/13627008.html
Copyright © 2011-2022 走看看