最开始学selenium爬虫看的代码(注释详细)
2021/6/27 0:01:01
本文主要是介绍最开始学selenium爬虫看的代码(注释详细),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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("爬取完成,请到相应文件夹查看!")
这篇关于最开始学selenium爬虫看的代码(注释详细)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21订单系统资料入门教程:轻松管理你的订单
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java部署资料:新手入门教程
- 2024-09-21Java订单系统资料:新手入门教程与实战指南
- 2024-09-21Java管理系统资料入门教程
- 2024-09-21从零开始学习Java监控系统资料
- 2024-09-21Java就业项目资料:新手入门的必备教程
- 2024-09-21Java全端资料:初学者指南
- 2024-09-21Java全栈资料入门教程及资源汇总
- 2024-09-21Java日志系统资料入门教程