selenium的基本使用方法:
感谢博主静觅的文章,里面有详细的python中selenium的用法。需要提醒的是implicitly_wait()的用法:设置的隐性等待时间是适用全局的,因此值不宜设置太大,会严重
拖慢爬虫程序的速度。
关于selenium实践时的二三问题:
任务目标是爬取每一年的每个分类的journal数据,因此就有两个重要的列表需要爬取,年份列表和分类列表。
2.1 时间列表的定位
虽然列表用find_elements方法很容易获取到一个大列表,但是这种操作的弊端在与很容易遇到在遍历时某个元素不在DOM资源中的异常。这里给出的解决方法是
用Xpath
每次定位到具体的某个元素,而不是获取列表来进行遍历。
2.2 分类列表的定位
分类列表的获取我在实验时发现一个很神奇的现象,在程序中第一次获取的时候是一个长度为227的列表,经过一番操作之后列表长度居然变化了,变...化...了...,
必须经历了一些操作才会变化,并且重新刷新也没有办法改正。不仅大小变化了,列表的顺序也有所不同。由于对网页了解程度不够,因此没有分析出到底原因在
哪里。但是解决方法还是有的。第一获取的长为227的列表应该是全面的,因此抽取出所有目录的名称,存在一个列表里面。通过每一个列表的遍历来依次选中每
一个分类。那要怎么根据字符串去定位这个元素呢?
如图,名称列表记录的是里面分类的简称,也就是
里面name和value的值,通过cssselector就能够确定。具体代码为
driver.find_element_css_selector("input[value=\"%s\"]"