• python获取动态网站上面的动态加载的数据(selenium+Firefox)


    最近突然想到以前爬取百度学术上的参考文献,大家可以看一下以前我的写的博客:http://www.cnblogs.com/ybf-yyj/p/7351493.html,但是如果利用这个方法,太痛苦了,需要人工来复制粘贴,所以这里来介绍用selenium来实现这个功能,贴上代码:

    #-*- coding:utf-8 -*-
    from selenium import webdriver
    import time
    from bs4 import BeautifulSoup
    #拼接url
    titlename='Application of biosorption for the removal of organic pollutants: a review'
    url_name=titlename.split(' ')
    url='http://xueshu.baidu.com/s?wd='+'+'.join(url_name)
    #打开Firefox
    diver=webdriver.Firefox()
    diver.get(url)
    #防止引用太多,不断click,直到参考文献下不存在‘加载更多’
    try:
    
        for i in range(0,50):
            # 等待网站加载完成
            time.sleep(0.2)
            diver.find_elements_by_class_name('request_situ')[1].click()
    except:
        print '********************************************************'
    #等到加载完成获取网页源码
    time.sleep(10)
    #使用BeautifulSoup获取参考文献
    soup=BeautifulSoup(diver.page_source,'lxml')
    items=soup.find('div',{'class':'con_reference'}).find_all('li')
    for i in items:
        print i.find('a').get_text()
    #关闭网页
    diver.close()

    注意:

        代码中红色标注,本人因为这个错误,弄了半天

        本人遇到一个问题,每次第一次爬取,click事件不响应,利用断点查看发现又可以了,后面就都可以了,这个我要不知道为什么会这样

        chrome浏览器click事件也执行不了

    如果大家不想看到浏览器出现,可以使用diver=webdriver.PhantomJS()替代diver=webdriver.Firefox()

    以上的基础在于安装了PhantomJS、geckodriver.exe

  • 相关阅读:
    jquery中 append 和appendto的区别
    vb的property 和event
    VB 基础语法以及教学视频
    outlook 2007 IMAP设置和配置
    浏览器文档播放Shockwave Flash 插件问题
    VB execl文件后台代码,基础语法
    VB中后台打开Excel文件实现代码
    excel文件后台代码
    DataTable中执行DataTable.Select("条件"),
    多个不同的表合并到一个datatable中,repeater在绑定datatable
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/7710464.html
Copyright © 2020-2023  润新知