山东大学RISC-V公共开放平台开发记录
3.1-3.6
进行risc-V的开源资源的收集
使用Python+Selenium做爬虫爬取知网,新闻网站等与risc-V相关的论文,新闻资源,为网站未来的开发和后端的调用提供资源基础。
Selenium简介
Selenium 的初衷是打造一款优秀的自动化测试工具,但是慢慢的人们就发现,Selenium 的自动化用来做爬虫正合适。我们知道,传统的爬虫通过直接模拟 HTTP 请求来爬取站点信息,由于这种方式和浏览器访问差异比较明显,很多站点都采取了一些反爬的手段,而 Selenium 是通过模拟浏览器来爬取信息,其行为和用户几乎一样,反爬策略也很难区分出请求到底是来自 Selenium 还是真实用户。而且通过 Selenium 来做爬虫,不用去分析每个请求的具体参数,比起传统的爬虫开发起来更容易。Selenium 爬虫唯一的不足是慢,如果你对爬虫的速度没有要求,那使用 Selenium 是个非常不错的选择。Selenium 提供了多种语言的支持(Java、.NET、Python、Ruby 等),不论你是用哪种语言开发爬虫,Selenium 都适合你。
Selenium的爬取操作与用户的真实操作十分相似,处理速度较慢以外几乎没有缺点。
Selenium可以做到与网页进行输入和输出的交互操作。
在提取网页资源时通过find_element方法提取网页要素
主要方式:by_class_name,by_id,by_xpath,by_css_sector,其中xpath方式对于没有显式的标识的元素的提取有奇效。
主要问题:由于网页的加载时间问题,在网页未加载完全时无法提取网页元素(Ajax页面)
解决方法:1. 使用time.sleep方法,简单且有效,但有浪费时间的可能,或者需要在不同时间不同网站设置不同 参数,过于复杂
2. 使用WebDriverWait和expected_condition,可以对Ajax动态加载提供有效且可读的解决方式
部分知网爬虫代码
*while* True:
time.sleep(2)
*#当前窗口柄*
now_handle = driver