ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

最开始学selenium爬虫看的代码(注释详细)

2021-06-26 23:29:58  阅读:148  来源: 互联网

标签:__ name text selenium 爬虫 注释 div find browser




from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import csv
import time
browser = webdriver.Chrome()  # executable_path是驱动器chromedriver的路径
browser.minimize_window()  # 最小化窗口,方便输入要检索的页数和关键词
url = 'http://epub.cnki.net/grid2008/index/ZKCALD.htm'


def start_spider():
    # 请求url
    browser.get(url)
    # 显示等待输入框是否加载完成
    browser.find_element_by_id('cm_1_6').click()
    time.sleep(2)
    browser.find_element_by_id('auscho2_1_value1').send_keys('图书情报')
    # 找到输入框的id,并输入关键字,如这儿我们输入测绘,待会儿我们爬取的就是关于测绘文献方面的信息
    # word = input("请输入要检索的关键词 :")
    print("\n请稍等片刻!")
    browser.find_element_by_id('auscho_1_value1').send_keys('赵媛')
    # 输入关键字之后点击搜索
    browser.find_element_by_id('Button5').click()
    time.sleep(5)
    # 定位到iframe
    try:
        browser.find_element_by_id('iframeResult')
    except NoSuchElementException:
        print('no')
    browser.switch_to.parent_frame()
    x=browser.switch_to.frame('iframeResult')
    print(x)
    # browser.switch_to.frame('iframeResult')
    a = browser.find_element_by_class_name('s_table')
    tr_content = a.find_elements_by_tag_name("tr")  # 进一步定位到表格内容所在的td节点
    lst = []  # 存储为list
    print(lst)  # 输出表格内容
    for tr in tr_content:
        td =tr.find_elements_by_tag_name("td")  # 进一步定位到表格内容所在的td节点
        lst.append(td.text)
    # a=browser.find_element_by_class_name('s_tabletd_rb')
    print(lst)  # 输出表格内容
    browser.switch_to.default_content()
    # # print(browser.page_source)
    # # 显示等待文献是否加载完成
    # WebDriverWait(browser, 1000).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'g-search-body')))
    # # 声明一个标记,用来标记翻页几页
    # count = 1
    # while True:
    #     # 显示等待加载更多按钮加载完成
    #     WebDriverWait(browser, 1000).until(
    #         EC.presence_of_all_elements_located((By.CLASS_NAME, 'c-company__body-item-more')))
    #     # 获取加载更多按钮
    #     Btn = browser.find_element_by_class_name('c-company__body-item-more')
    #     # 显示等待该信息加载完成
    #     WebDriverWait(browser, 1000).until(EC.presence_of_all_elements_located(
    #         (By.XPATH, '//div[@id="searchlist_div"]/div[{}]/div[@class="c-company__body-item"]'.format(2 * count - 1))))
    #     # 获取在div标签的信息,其中format(2*count-1)是因为加载的时候有显示多少条
    #     # 简单的说就是这些div的信息都是奇数
    #     divs = browser.find_elements_by_xpath(
    #         '//div[@id="searchlist_div"]/div[{}]/div[@class="c-company__body-item"]'.format(2 * count - 1))
    #     # 遍历循环
    #     for div in divs:
    #         # 获取文献的题目
    #         name = div.find_element_by_class_name('c-company__body-title').text
    #         # 获取文献的作者
    #         author = div.find_element_by_class_name('c-company__body-author').text
    #         # 获取文献的来源和日期、文献类型等
    #         text = div.find_element_by_class_name('c-company__body-name').text.split()
    #         if (len(text) == 3 and text[-1] == '优先') or len(text) == 2:
    #             # 来源
    #             source = text[0]
    #             # 日期
    #             datetime = text[1]
    #             # 文献类型
    #             literature_type = None
    #         else:
    #             source = text[0]
    #             datetime = text[2]
    #             literature_type = text[1]
    #
    #         data = (name, author, source, datetime, literature_type)
    #         with open('D:\Python_DATA\data.csv', 'a', encoding='utf-8', newline='') as csvfile:
    #             writer = csv.writer(csvfile)
    #             writer.writerow(data)
    #
    #     # 如果Btn按钮(就是加载更多这个按钮)没有找到(就是已经到底了),就退出
    #     if not Btn:
    #         break
    #     else:
    #         Btn.click()
    #     # 如果到了爬取的页数就退出
    #     if count == page:
    #         break
    #     count += 1
    #     # 延迟,让爬虫爬取慢点,给服务器减轻压力,以免服务器崩溃
    #     time.sleep(3)
    #

if __name__ == '__main__':
    # 先写入表头信息
    # with open('D:\Python_DATA\data.csv', 'a', encoding='utf-8',
    #           newline='') as csvfile:  # 存储的路径可以自己设置,我存在了D:\Python_DATA\data.csv里
    #     writer = csv.writer(csvfile)
    #     writer.writerow(("文献名", "作者", "来源", "发表日期", "文献类型"))
    start_spider()  # eval()是执行一个字符串表达式
    # browser.close()
    print("爬取完成,请到相应文件夹查看!")

标签:__,name,text,selenium,爬虫,注释,div,find,browser
来源: https://blog.csdn.net/sgld995/article/details/118256225

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有