十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Python中pubmed的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
南关网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
第一步当然是导包了。自动化需要的包小伙伴还记得吗,就是selenium,具体如下:
from selenium import webdriver from selenium.webdriver.support.ui import Select from selenium.webdriver.common.action_chains import ActionChains
① 代码讲解
代码1: 调用selenium包中的webdriver模块,相信小伙伴都已经安装了webdriver软件在谷歌浏览器安装目录了吧,这个模块将会启用webdriver软件进而实现谷歌浏览器自动化操作;
代码2: 调用Select模块,当页面需要对单选框、复选框、下拉框进行操作时,就要调用这个模块,因为在接下来操作我们需要在Format中选择CSV格式(如图),所以可以提前导入这个模块;
代码3: ActionChains模块是真实模拟键鼠操作,如鼠标悬停、双击、右击等操作,可以说是selenium中的万能利器。
PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取
进入准备阶段了,对一些参数提前设置,方便第三步的正式操作
find = input('请输入要查找的内容,回车确认:') url = 'https://pubmed.ncbi.nlm.nih.gov/?term='+find+'&size=200&page=51' driver = webdriver.Chrome()driver.get(url)driver.maximize_window()driver.implicitly_wait(10)
①代码讲解
代码1: 是通过input函数实现人机交互,将我们需要查找的内容赋值给一个叫“find”的变量(小伙伴可以自定义变量,如果修改的话在代码2中也要记得修改成新的变量名)。
单独运行这句代码,python会出现如下界面:可以看到,input()中的内容会出现在终端,起到提示作用,小伙伴可以自定义内容;在绿色框中输入内容,会赋值给“find”这个变量。
在这里小编以“T2DM”为例,输入“T2DM”回车,这时候“find”就等于“T2DM”,然后就可以通过代码2赋值为“url”变量,这就是接下来我们要自动化页面的链接了。
注意事项
如果有小伙伴觉得没必要人机交互,也可以直接赋值,依然以”T2DM“为例,如下:效果是一样的。
注意:在python中除了文本输入,其余符号均为英文符号。在这里的引号应为" "而不是“ ”。
find = "T2DM" url = 'https://pubmed.ncbi.nlm.nih.gov/?term='+find+'&size=200&page=51'
② 代码讲解
代码1代码2: 我们就能获取对应的链接地址,接下来可以通过调用浏览器来访问该页面了。
代码3: 通过webdriver模块调用Chrome浏览器(相信小伙伴通过之前教程已经把webdriver软件安装在谷歌浏览器的安装目录了),然后通过代码4让谷歌浏览器访问刚才的链接地址。当运行到代码4时,可以看到python自动打开了如下界面:
③代码讲解
对于打开的页面,我们可以进一步优化设置。通过代码5,将窗口最大化,然后设置隐性等待为10s。(不记得显性等待和隐性等待区别的小伙伴可以参照上一篇python教程)
在开始前要晓得一个概念:
① python是根据我们设置好的逻辑进行自动化操作,所以我们不是直接跟python说“去把这些文献下载了”,这不是python所能理解的逻辑;而是跟python说,“你先点这里,然后点这里,选这个,然后点这里,等一下,然后再点这里”,也就是说,如果我们要让python实现自动化,就要将我们要做的事拆分给python听。
So, 先手动操作→记录每个操作→转换成代码,然后修饰一下就是python语言了。这时候打开刚才的pubmed界面,可以进行批量下载的操作是很多种的,小编只是举一个例子,但实质是一样的,小伙伴们可以举一反三。
② 手动操作。单击Save→单击Format→选择CSV→Creat file,这时候就可以整页保存了。
③ 转换成代码。通过3.2的步骤,我们可以跟python说“先点这个再点这个再点这个”了,但怎么转换成代码,小伙伴们记住一句代码
ActionChains(driver).move_to_element(driver.find_element_by_xpath('xpath_content')).click().perform()
记住这句代码几乎可以在后续的自动化中横着走,这句代码有点长,拆分一下:
ActionChains(driver) move_to_element( A ) driver.find_element_by_xpath( 'B' ) click() perform()
代码讲解:
代码1: 调用ActionChains来操作driver,怎么操作?看代码2;
代码2: 将鼠标移动到A这个元素,A这个元素是啥?看代码3;
代码3: 通过driver来找一个“B”的xpath,找回的结果就是A。
代码4:鼠标单击;
代码5:将上述操作依次进行。
用另一个方式解读,就是寻找一个叫“B”的xpath,然后鼠标移动到这个xpath并单击,这样就模拟了真实鼠标的移动单击操作了。
贴上小编写的代码
for i in range(51,56): driver.implicitly_wait(10) ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-results-panel-trigger"]')).click().perform() Select(driver.find_element_by_xpath('//*[@id="save-action-selection"]')).select_by_visible_text("All results on this page") ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-action-format"]')).click().perform() Select(driver.find_element_by_xpath('/html/body/main/div[1]/div/form/div[2]/select')).select_by_visible_text("CSV") ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-action-panel-form"]/div[3]/button[1]')).click().perform() target =driver.find_element_by_xpath('//*[@id="search-results"]/section/div[3]/a/span') driver.execute_script("arguments[0].();", target) ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="search-results"]/section/div[3]/a/span')).click().perform() ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="search-page"]/div[12]/div/form/button')).click().perform() print('第'+str(i)+'页下载成功') print('跳转第'+str(i+1)+'页面中') driver.quit()print('全部下载完毕,自动退出。')
可以看到,这句代码出现了最多次,且每次出现只是修改了xpath的内容,也就是说,这句重点代码的重点内容在于怎么找这个xpath,其余的只要copy就行了。
find = input('请输入要查找的内容,回车确认:') url = 'https://pubmed.ncbi.nlm.nih.gov/?term='+find+'&size=200&page=51' from selenium import webdriverfrom selenium.webdriver.support.ui import Selectfrom selenium.webdriver.common.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get(url)driver.maximize_window()driver.implicitly_wait(10) for i in range(51,56): driver.implicitly_wait(10) ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-results-panel-trigger"]')).click().perform() Select(driver.find_element_by_xpath('//*[@id="save-action-selection"]')).select_by_visible_text("All results on this page") ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-action-format"]')).click().perform() Select(driver.find_element_by_xpath('/html/body/main/div[1]/div/form/div[2]/select')).select_by_visible_text("CSV") ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="save-action-panel-form"]/div[3]/button[1]')).click().perform() target =driver.find_element_by_xpath('//*[@id="search-results"]/section/div[3]/a/span') driver.execute_script("arguments[0].();", target) ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="search-results"]/section/div[3]/a/span')).click().perform() ActionChains(driver).move_to_element(driver.find_element_by_xpath('//*[@id="search-page"]/div[12]/div/form/button')).click().perform() print('第'+str(i)+'页下载成功') print('跳转第'+str(i+1)+'页面中') driver.quit()print('全部下载完毕,自动退出。')
关于Python中pubmed的作用是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。