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中模式都打开,如下图