本文地址:https://blog.csdn.net/itnerd/article/details/108505844


知网爬虫的第一步,输入检索条件

selenium 通过模拟鼠标点击,自动实现:选择检索词的类别、输入检索词、选择精确还是模糊查找、逻辑关系、点击检索按钮等一系列动作

而你所需要做的,就是给出搜索条件:

search_words = '摘要:地理探测器(精确) OR 摘要:geodetector(精确)'

首先将搜索条件处理成四元组:(逻辑关系,搜索类型,搜索词,精确|模糊)

search_words = 'BEG '+search_words
pieces = search_words.split(' ')conditions = []
for p in pieces:if p in ['BEG', 'OR', 'AND','NOT']:conditions.append([p])else:conditions[-1] += p.replace(')','').replace('(',':').split(':')
print(conditions)
'''
[['BEG', '摘要', '地理探测器', '精确'], ['OR', '摘要', 'geodetector', '精确']]
'''

然后就开始一系列的点击啦

search_type = {"主题":"SU","篇关摘":"TKA","关键词":"KY","篇名":"TI","全文":"FT","作者":"AU","第一作者":"FI","通讯作者":"RP","作者单位":"AF","基金":"FU","摘要":"AB","小标题":"CO","参考文献":"RF","分类号":"CLC","文献来源":"LY","DOI":"DOI"
}search_fuzzy = {"精确" : "=","模糊" :"%"
}logical_id = {"AND": 0,"OR":1,"NOT":2
}sleep_time = 0.5search_middle = driver.find_element_by_class_name('search-middle')
dds = search_middle.find_elements_by_tag_name("dd")
if len(dds) < len(conditions):passfor i in range(len(conditions)):if i > 0:logical_list = dds[i].find_element_by_xpath('.//div[@class="sort logical"]')logical_list.click()time.sleep(sleep_time)options = logical_list.find_elements_by_xpath('.//a')options[logical_id[conditions[i][0]]].click()time.sleep(sleep_time)dds[i].find_element_by_xpath('.//div[@class="sort reopt"]').click()time.sleep(sleep_time)dds[i].find_element_by_xpath('.//a[@value="{}"]'.format(search_type[conditions[i][1]])).click()time.sleep(sleep_time)dds[i].find_element_by_tag_name('input').clear()dds[i].find_element_by_tag_name('input').send_keys(conditions[i][2])dds[i].find_element_by_xpath('.//div[@class="sort special"]')\.find_element_by_class_name('sort-default').click()time.sleep(sleep_time)dds[i].find_element_by_xpath('.//a[@value="{}"]'.format(search_fuzzy[conditions[i][3]])).click()time.sleep(sleep_time)
driver.find_element_by_class_name('search-buttons').click()time.sleep(5)

成果展示:

关注后免费下载完整代码哦:

https://download.csdn.net/download/itnerd/12832133

注:代码用 jupyter notebook 完成,这个好用的工具怎么能不学呢

版本二

模拟搜索的时候容易点错,改成下面版本二,再selenium 的浏览器中手动搜索后再开始爬:
https://goodgoodstudy.blog.csdn.net/article/details/108530502

selenium 知网爪巴虫相关推荐

  1. 多线程爪巴虫下载进击的巨人 v.1

    这个爪巴虫还是有很多bug,有些图片超时后就没下载下来,导致每一刊都少了几页 o(╥﹏╥)o 暂时把第1版贴在这,准备升级爪巴虫2.0 import requests from bs4 import ...

  2. baidu文库爪巴虫——xls

    用开发者工具从下载文件的 response 中找文档内容,很快就找到了 分析请求地址及参数 然后回到文档源代码页面,发现这个请求地址已经包含在里面了,只需要把它提取出来即可 表格和word 文档还是不 ...

  3. 多线程爪巴虫下载进击的巨人

    文章目录 线程池 获取图片链接 下载图片 存在的问题 线程池 import contextlib import glob import os import re import threading im ...

  4. 多线程爪巴虫下载进击的巨人 v.2

    本文地址:https://goodgoodstudy.blog.csdn.net/article/details/108757857 文章目录 线程池 获取图片链接 下载图片 存在的问题 线程池 im ...

  5. baidu文库爪巴虫——txt

    首先你应该清楚,直接从文档页面源代码中是找不到文档内容的, 但是我们通过查看浏览器下载的文件,可以很容易的发现文档内容的来源, 为什么说容易呢,引文包含内容的文件通常都是比较大的!只要按文件大小排序, ...

  6. 利用selenium爬取斗鱼漂亮小姐姐直播间信息

    斗鱼 - selenium 思路 源代码 斗鱼 - selenium 更 多 爬 虫 教 程 请 移 步 \color{red}更多爬虫教程请移步 更

  7. 欧拉梯形格式C语言,常微分方程数值解法 欧拉格式和梯形格式比较.doc

    常微分方程数值解法 欧拉格式和梯形格式比较 甥啼伐慑穗策步怀冻窿连鼓枉磷浮血腔氓玩伶樱拨惊款蹈耀突菩屠赘颧泥整抽蟹寥毋城舶败袍龙垫炯听记捅碉钠辞摆棒猩饯钒轮剂厅戎懦汝差栅寿坪赞壁洒日朵谰丛沛称怜给吟戏 ...

  8. swing中怎么在原来图片的基础上切换第二张图片_摄影比赛原来是这么评出来的!照片点评与修图小赛第10期...

    今天的摄影教程中,托马斯会和大家分享网络上的摄影比赛,都是如何进行评选的,以及如何去分析照片的优缺点. 我会以修图小赛第10期<6100万像素修图挑战来了!索尼A7R4风光原片后期等你调!> ...

  9. 学了Python不想去给别人打工,那就做做这些事儿吧!

    很多学习计算机开发的小伙伴自己学习了很久的语言开发,具有一定的开发功底,技术什么的都不在话下,但是其中有相当大一部分的程序员小伙伴不想进公司给别人打工,不想每天束缚在公司规章制度的牢笼中,那就看看下面 ...

最新文章

  1. MVC通过ViewBag动态生成Html输出到View
  2. squid介绍及其简单配置
  3. 使用CommandLineRunner或ApplicationRunner接口创建bean
  4. ARM全新Armv9架构:10年最大更新、增强AI和security能力
  5. DFS走迷宫问题(非最短路径)
  6. icml 2014最佳论文_2014年最佳开放硬件
  7. UVA10849 Move the bishop【国际象棋】
  8. 贺利坚老师汇编课程34笔记:SI和DI复制字符串
  9. DP(递归打印路径) UVA 662 Fast Food
  10. Hello!CDSN!
  11. 降级至1.1.835教程
  12. IEC60068-2-5太阳辐射模拟试验测试
  13. NH7020固件网口分析与platoSDR固件对比
  14. 李阳和他的疯狂英语(r5笔记第46天)
  15. window10安装kubectl工具及配置config信息
  16. 1-VI--随机数据生成
  17. token系统讲解及过期处理
  18. Lua 报错 PANIC: unprotected error in call to Lua API (no calling environment) 解决办法
  19. 在sublime中插入图片
  20. Java常见面试50题(java jsp)

热门文章

  1. Bytes.toBytes(String类型的字符串) 将字符串转成字节数组的好处
  2. 利用canvas实现的JS画圆圈特效代码
  3. css的认识和选择器
  4. SQL数据库连接失败---错误18456
  5. 华南理工计算机应用随堂作业答案,华南理工大学计算机应用基础随堂练习题目及答案...
  6. centos7安装随堂笔记
  7. 世界各国边界线geojson
  8. mac安装pip命令
  9. java线程join方法
  10. Spark:Streaming 实时计算框架理论