最近由于科研需求,重温了自己硕士时候写的Python+Selenium,让浏览器自动帮你下文献,发现Selenium真是扒数据的利器,使用Selenium可以实现cssci题录数据的自动化下载。
现在把关键代码记录在这里备查。
需要的模块。
import osfrom selenium import webdriverimport lxml.etree as etree
打开网页。
def openPage(browser,url): browser.get(url)
获取网页HTML结构。
def get_html(browser): html = browser.page_source #得到网页信息 info_html = etree.HTML(html) #使用lxml.etree解析网页 return info_html
输入检索词。
def input_data(browser, input_text): time.sleep(2) browser.find_element_by_name("keyword1").send_keys(input_text) browser.find_element_by_xpath("//div[@id='wx_ly']/img").click()
选择“论文”类型。
def get_paper(browser): time.sleep(2) browser.find_element_by_xpath('//ul[@id="show_jl_wzlx"]/li/a').click()
点击选择全部,完成本页下载,并翻页,下载下一页,直到最后一页。
def do_download(browser): is_end = True while(is_end): time.sleep(2) browser.find_element_by_xpath('//input[@name="select_down_all"]').click() browser.find_element_by_xpath('//input[@value="下载"]').click() time.sleep(1) browser.find_element_by_xpath('//input[@name="select_down_all"]').click()
try: time.sleep(1.5) browser.find_element_by_link_text('下一页').click() except: time.sleep(2) is_end = False print('已到尾页')
(推送声明原创需要300字以上,以下为凑字数)
编程只是一种工具,适用于完成机械、重复的任务。例如对于题录数据下载这种任务,几乎是从事文献计量学研究的人都要经历的,而题录数据格式一致、下载流程一致,题录数据的下载完全就是一项搬砖的工作。对于这种工作,还是交给电脑自动完成会比较好一些。编程得到的所谓程序就是将这些流程固化为代码,让计算机模拟人的下载操作,节省大把搬砖的时间,岂不妙哉。