Selenium + phantomJS 爬取动态网站

受同学委托,帮忙爬新浪微博的微博和评论内容。

发现这是一个动态网站,我前端技术不行,搞不懂它的ajax接口,所以不能直接用requests包爬了。

后来了解到Selenium可以模拟浏览器(Firefox, phantomJS等)的点击,然后用Beautifulsoup解析HTML,Selenium是爬动态网站的神器!

phantomJS是一个没有界面的浏览器,用来爬虫最合适了。

把Selenium用到的一些接口总结一下吧。

常用的接口

以sina微博登录为例,

    from selenium import webdriver
    from bs4 import BeautifulSoup
    import time

    browser = webdriver.PhantomJS()   # 创建phantomJS浏览器对象
    browser.get(“http://login.sina.com.cn”)   # 访问网站

    elem_user = browser.find_element_by_name("username”)  # 定位到用户名元素
    elem_user.send_keys(‘username’)  # 输入用户名
    elem_pwd = browser.find_element_by_name("password")
    elem_pwd.send_keys(‘password’)  # 密码
    elem_sub = browser.find_element_by_xpath("//input[@class='W_btn_a btn_34px']")  # 定位到提交元素
    elem_sub.click()  # 点击登陆
    time.sleep(10)  # 等待10s

    current_url = browser.current_url  # 当前页面的url
    print current_url

    browser.get(“http://other/page/of/sina”)  # 跳转到你要爬取的页面
    time.sleep(10)
    html = browser.page_source  # 获得当前页面的html字符串

    # 可以开始解析html,获得你要的数据了
    html = BeautifulSoup(html, ‘lxml’)  # 转换成BeautifulSoup对象,用于后续解析

如果用FireFox浏览器,会看到浏览器自己再动。

    browser = webdriver.Firefox(executable_path=“path/to/geckodriver”)

文档

http://selenium-python.readthedocs.io/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值