下面是一个爬取知网数据的例子,使用selenium 用python爬取数据
1.创建对象,打开指定地址,在休眠的20秒内输入搜索项
driver= webdriver.Chrome()
driver.get("http://epub.cnki.net/kns/brief/result.aspx?dbprefix=scdb&action=scdbsearch&db_opt=SCDB")
time.sleep(20)
2.点击搜索按钮,休眠5秒,等待渲染结束
driver.find_element_by_id('btnSearch').click()
time.sleep(5)
3.根据选择搜索项,找到key并指定地址(此处和业务有关)
key=driver.find_element_by_id('curdbcode').get_attribute('value').upper()
url='http://epub.cnki.net/kns/brief/brief.aspx?pagename=ASP.brief_result_aspx&dbPrefix=[KEY]&ConfigFile=[KEY].xml&recordsperpage=50'.replace('[KEY]', key)
driver.get(url)
#nextPage()方法,是否有下一页,控制翻页操作
nextPage(driver)
def nextPage(driver):
#当前页面的url
urll=driver.current_url
html=driver.page_source.encode('utf8')
if 'TitleLeftCell' in html:
#根据class name查找
linkss=driver.find_element_by_class_name('TitleLeftCell')
if linkss:
#根据节点name查找
for link in linkss.find_elements_by_tag_name("a"):
titlevalue=link.text
if titlevalue=='下一页':
#模拟点击操作
link.click()
time.sleep(5)
nextPage(driver)
break
总结:通过一个实际的项目,学习selenium,selenium操作浏览器很方便,一些find_element_XX_XX_XX的方法可以快速定位,下篇会继续写一些有关selenium的用法