在这里插入图片描述
主要爬取下面的表格内的信息如文献篇数,被引用数等等
用的是selenium爬虫

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import csv
import time
browser = webdriver.Chrome()
browser.minimize_window()  # 最小化窗口
url = 'http://epub.cnki.net/grid2008/brief/result_src.aspx?comptype=scho&stype=1&&auscho_1_sel=%E5%AD%A6%E8%80%85&auscho_1_value1=%E8%B5%B5%E5%AA%9B&auscho_1_special1=%3D&auscho2_1_sel=%E7%A0%94%E7%A9%B6%E9%A2%86%E5%9F%9F%2C%E7%A0%94%E7%A9%B6%E6%96%B9%E5%90%91%2C%E5%AD%A6%E8%80%85%E7%9F%A5%E8%AF%86%E5%90%91%E9%87%8F&auscho2_1_value1=%E5%9B%BE%E4%B9%A6%E6%83%85%E6%8A%A5&auscho2_1_special1=%25&navicode=&showtitle=%u5B66%u8005%u68C0%u7D22&dbCatalog=%u4E2D%u56FD%u5B66%u672F%u6587%u732E%u7F51%u7EDC%u51FA%u7248%u603B%u5E93'


def start_spider():
    # 请求url
    browser.get(url)

    time.sleep(5)
    try:
        browser.find_element_by_id('iframeResult')# 定位到iframe
    except NoSuchElementException:
        print('no')
    browser.switch_to.parent_frame()#切换到父iframe
    x=browser.switch_to.frame('iframeResult')
    # browser.switch_to.frame('iframeResult')
    a = browser.find_element_by_class_name('s_table')
    tr_content = a.find_elements_by_tag_name("tr")  # 进一步定位到表格内容所在的tr节点
    lst = []  # 存储为list
    for tr in tr_content:
        tds =tr.find_elements_by_tag_name("td")  # 进一步定位到表格内容所在的td节点
        for td in tds:

            lst.append(td.text)
        with open('D:\Python_DATA\data.csv','a', encoding='utf-8',newline='') as csvfile:
            writer = csv.writer(csvfile)
            writer.writerow(lst)
            lst.clear()
    # a=browser.find_element_by_class_name('s_tabletd_rb')
    print(lst)  # 输出表格内容
    browser.switch_to.default_content()
    f = open('D:\Python_DATA\sd.csv', 'r')
    content = f.read()
    final_list = list()
    rows = content.split('\n')
    #名单转换成list
    for row in rows:
        final_list.append(row.split(','))
    for word in final_list:
        try:#异常处理,有的人查询不到
            print(word)
            browser.find_element_by_id('auscho_1_value1').clear()
            browser.find_element_by_id('auscho_1_value1').send_keys(word)
            browser.find_element_by_class_name('butt04').click()
            try:
                time.sleep(2)
                browser.find_element_by_id('iframeResult')
            except NoSuchElementException:
                print('no')
            browser.switch_to.parent_frame()#切换到父iframe
            x=browser.switch_to.frame('iframeResult')
            # browser.switch_to.frame('iframeResult')
            a = browser.find_element_by_class_name('s_table')
            tr_content = a.find_elements_by_tag_name("tr")  # 进一步定位到表格内容所在的tr节点
            for tr in tr_content:
                tds =tr.find_elements_by_tag_name("td")  # 进一步定位到表格内容所在的td节点
                for td in tds:

                    lst.append(td.text)
                with open('D:\Python_DATA\data.csv','a', encoding='utf-8',newline='') as csvfile:
                    writer = csv.writer(csvfile)
                    writer.writerow(lst)
                    lst.clear()
            # a=browser.find_element_by_class_name('s_tabletd_rb')
            browser.switch_to.default_content()
        except:
            print('查无此人')
        continue

if __name__ == '__main__':
    start_spider()
    #browser.close()
    print("爬取完成,请到相应文件夹查看!")

效果图:
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐