爬虫练习(一)爬取知网、万方、维普文献标题、作者、刊物来源等信息

刚刚开始学习Python,今天一周整,浏览了站内一些大侠博客相关内容,自己也尝试着写了一个爬虫。

直接借鉴了几位大侠的经验,如有冒犯之处恳请海涵。

先说说目的吧,本爬虫的目的是根据EXCEL文件的作者名字信息,以及设定的单位信息来自动循环爬取文章题目、作者姓名、期刊名称、发表时间(刊次)、下载量、被引量等信息并保存到CSV文件中。

用到了chromedriver、selenium、xlrd、pandas

因为我爬取的作者发文量比较少,万方、维普部分,没有做分页查询。

因为太懒,查询函数没有做成模块,我知道这是一种不好的习惯,以后我会改(也不一定)。

三个查询函数中所用的获取目标信息的方式不是很统一。

还请大家谅解一个快40的人,写代码写的这么乱。

代码仅供大家学习交流,请勿用于违法用途,如有侵权请联系我,我会及时删除。

代码还有很多不足的地方,请大家批评指正!

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import xlrd
from urllib.parse import urljoin
import time
import random
import json
import csv
import pandas as pd
from itertools import zip_longest
# 设置谷歌驱动器的环境
options = webdriver.ChromeOptions()
# 设置chrome不加载图片,提高速度
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
# 创建一个谷歌驱动器
browser = webdriver.Chrome()
data_list = [] # 声明一个全局列表,用来存储字典
def start_spider(aurname):  #爬取知网信息
    # 请求url
    url = 'https://kns.cnki.net/kns/brief/result.aspx?dbprefix=SCDB&crossDbcodes=CJFQ,CDFD,CMFD,CPFD,IPFD,CCND,CCJD'
    browser.get(url)
    # 显示等待输入框是否加载完成
    WebDriverWait(browser, 1000).until(
        EC.presence_of_all_elements_located(
            (By.ID, 'iframeResult')
        )
    )
    browser.find_element_by_id('au_1_value1').send_keys(aurname)
    browser.find_element_by_id('au_1_value2').send_keys('清华大学')
    # 在input框内输入回车实现  search_btn.click()效果
    browser.find_element_by_id('txt_2_value1').send_keys(Keys.ENTER)
    # 显示等待文献是否加载完成,等待iframe加载完成
    time.sleep(5)

    browser.switch_to.default_content()
    browser.switch_to.frame('iframeResult') # 定位到页面元素


    df = []
    for page in range(1, 2):
        try:
            browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
            paper_name = browser.find_elements_by_css_selector('a.fz14')
            author = browser.find_elements_by_css_selector('td.author_flag')
            source = browser.find_elements_by_css_selector('td.author_flag

你可能感兴趣的:(Pythong-爬虫,python,selenium,定位)