美文网首页Python
Web自动化(2):自动获取Plant Cell上最新文章标题

Web自动化(2):自动获取Plant Cell上最新文章标题

作者: lxmic | 来源:发表于2020-03-29 07:14 被阅读0次
期刊名

科研最前沿,关注最新期刊发表的文章,需要获取current issue的文章信息,我想着用自动化的方式,来抓取所有最新文章的标题,知道发表了那些文章。

写在前面

大致的流程如下:


1. 分析网页并选取元素

web自动化最关键的部分就是如何查找到你需要的元素,只要我们可以找到元素,那么我们就可以去进行执行相关操作,实验web自动化。

  • 首先我们使用F12查看网页的代码,进入开发者页面。或者在网页上右键选择检查,就会出现网页代码页面。


    检查
    网页源码,开发者模式
  • 首页上我们可以看到current issue的连接入口,点击就可以进入当前的最新一期的文章页面。我们看一下这个链接的HTML源码,看看是什么样的元素。有两种方法可以快速定位到这个元素:

    1. 把鼠标移动到元素上面,然后右击,同样选择检查,就会直接定位到这个元素在HTML源码中的位置。


      标签对应到源码
    2. 选择右边源码窗口最左上角的带箭头的框,点击一下,然后就再把鼠标移到页面中想要查看源码的位置,然后点击,之后也同样对应到相同的位置。


      定位元素位置
  • 我们可以看到这个元素是一个href属性的链接,但是我们为了方便每次都可以直接运行,而不想去改这个代码,那么需要找到一个元素其链接是不会变的。


  • 网页中,确实有一个位置,如图:


    点击这个链接,就可以直接进入当前最新一期的文章

2. 代码实现

# 导入我们需要的模块
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
# 创建驱动对象,指明使用Chrome浏览器驱动
# 因为已经是全局变量,就不用在里面写路径
wd = webdriver.Chrome()
wd.implicitly_wait(10)
# 调用webdriver对象的get方法,请求打开指定浏览器
wd.get('http://www.plantcell.org/')
# 移动鼠标到Content悬停
ac = ActionChains(wd)
ac.move_to_element(
    wd.find_element_by_css_selector('[class="sf-with-ul"]')
).perform()
# 找到current issue元素,找到href链接,然后点击鼠标。
link = wd.find_element_by_css_selector('li[class*="odd"] > a[href*="current"]')
link.click()
#找到所有的标题内容
elements = wd.find_elements_by_css_selector('span.highwire-cite-title')
# 打印我们需要的标题内容,前面两个和倒数第一个不是,我们选取我们需要的打印。
for element in elements[2:-1]:
    print(element.text)
    print()

# 关闭浏览器
wd.quit()

3. 获取内容比对

比对之后发现,没有错误,可以正确执行。以后直接运行这个代码,就可以获得最新期刊内容。


自动化获取内容
网页呈现内容

相关文章

网友评论

    本文标题:Web自动化(2):自动获取Plant Cell上最新文章标题

    本文链接:https://www.haomeiwen.com/subject/sxfeuhtx.html