Python selenium 通过 IE 抓取动态页面数据的实例

󰃭 2017-06-17

介绍

使用 python, selenium 抓取 http://www.alibaba.com 的搜索列表页面的内容

什么是 selenium

  • Selenium 是一个模拟浏览器,进行自动化测试的工具,它提供API与真实的浏览器内核交互
  • Selenium 跨语言,有Java、python等版本,支持多种浏览器,chrome、firefox以及IE

环境准备

安装 selenium, IEDriverServer

IEDriverServer 是用来调用IE浏览器进行获取页面的命令

  • InternetExplorerDriver 下载页面
  • 下载32位版本的 IEDriverServer,64位版本在ie11上运行有bug,输入框添加文本的时候很慢
  • 把 IEDriverServer 放在系统 path 路径下

安装 python 环境

  • python 3.6.1
  • selenium
  • bs4,解析页面内容

代码实例

#!/usr/bin/env python
# coding: utf-8

import time

# 提取页面内容的解析器
import bs4 as bs
from selenium import webdriver

def main():

    # 打开 ie 进程实例
    browser = webdriver.Ie()
    # 获取页面内容
    browser.get(u'http://www.alibaba.com')
    # 查找搜索输入框,并清楚搜索框内的内容
    browser.find_element_by_class_name("ui-searchbar-keyword").clear()
    # 输入搜索关键词
    browser.find_element_by_class_name("ui-searchbar-keyword").send_keys(u'tan brown')
    # 发送搜索请求
    browser.find_element_by_css_selector('.ui-searchbar-body form').submit()

    # print(browser.page_source)
    # 提取搜索结果页面的内容
    soup = bs.BeautifulSoup(browser.page_source, 'html.parser')
    items = soup.select('.item-content .title')
    for item in items:
        print(item.text)
    time.sleep(20)


if __name__ == '__main__':
    main()

抓取的结果

import tan brown granite slabs price

hot sale red granite tan brown for decoration

Tan Brown granite countertop, granite kitchen table top, granite countertop

Natural stone Tan brown granite for quartz countertop

Indian Brown Granite Tan Brown , Coffee Brown , Coral Brown Granite

Tan brown

white granite,light grey,dark grey,red color,NewG603,G654,G684,G664,G640,G687,G682,G655,G562,TAN BROWN ,DESERT BROWN,

Tan Brown / Coffee Brown Granite

Tan Brown

BLUESTONE High Quality Granite Cheap Small Slabs Tan Brown Of India Granite

Indian Brown Granite Tan Brown , Coffee Brown , Coral Brown Granite

Polished Tan Brown

注意事项

修改浏览器缩放比例

从菜单选择 “查看 > 缩放 > 100%”

IE 浏览器需要打开保护模式的设置

从菜单中选择 “Internet选项> 安全”, 为4中模式都打开,如下图