Scrapy and Selenium
How to scrapy js?
scrapy结合webkit抓取js生成的页面 http://www.cnblogs.com/Safe3/archive/2011/10/19/2217965.html
pip install -U selenium
Selenium IDE
http://docs.seleniumhq.org/projects/ide/
Download the server separately, from: http://selenium-release.storage.googleapis.com/2.40/selenium-server-standalone-2.40.0.jar
- java -jar selenium-server-standalone-2.40.0.jar
下面我们开始一步步来做:
1. 首先,进入你的电脑上Selenium Server的jar包所在的目录,通过java -jar xxx.jar的方式运行它,程序会自动监听本地的4444端口;
2. 参考我的上一篇博文《如何连入一台没有外网IP的服务器》 ,将本地的4444端口与服务器的4444端口建立Remote映射;
3. 使用Scrapy框架开始编写python程序,具体的例子不再赘述,网上有许多例子,比如这个:https://gist.github.com/1045108。仅描述几个要点:
a) 在python里调用selenium这样写:
self.sel = selenium(“localhost”, 4444, “*firefox”,”http://example.com/”)
不过直接写 “*firefox” 可能会找不到Firefox的路径,这时可以强制指定Firefox的程序路径,比如:”*firefox D:/Program Files/Mozilla Firefox/firefox.exe”。
b) 获取Firefox渲染完成后的HTML代码:
- sel = self.selenium
- sel.open(response.url)
- sel.wait_for_page_to_load(10000)
- html = sel.get_eval(“selenium.browserbot.getCurrentWindow().document.getElementsByTagName(‘html’)[0].innerHTML”)
- from selenium import selenium
- from scrapy.spider import BaseSpider
- from scrapy.http import Request
- import time
- import lxml.html
- class SeleniumSprider(BaseSpider):
- name = "selenium"
- allowed_domains = ['selenium.com']
- start_urls = ["http://localhost"]
- def __init__(self, **kwargs):
- print kwargs
- self.sel = selenium("localhost", 4444, "*firefox","http://selenium.com/")
- self.sel.start()
- def parse(self, response):
- sel = self.sel
- sel.open("/index.aspx")
- sel.click("id=radioButton1")
- sel.select("genderOpt", "value=male")
- sel.type("nameTxt", "irfani")
- sel.click("link=Submit")
- time.sleep(1) #wait a second for page to load
- root = lxml.html.fromstring(sel.get_html_source())
参考:
http://networkedblogs.com/F9Eph
https://pypi.python.org/pypi/selenium
http://docs.seleniumhq.org/download/
http://yupengyan.com/scrapy-and-selenium.html
Scrapy and Selenium的更多相关文章
- scrapy和selenium结合抓取动态网页
1.安装python (我用的是2.7版本的) 2.安装scrapy: 详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...
- 30.Scrapy 对接 Selenium
Scrapy 对接 Selenium(参考代码网址,https://github.com/Python3WebSpider/ScrapySeleniumTest) 此文就是参考书上的代码拿下来跑,作为 ...
- 15,scrapy中selenium的应用
引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生如果直接用scrapy对其url发请求,是获取不到那部分动态加载出来的数据值,但是通过观察会发现,通过浏览器 ...
- scrapy结合selenium抓取武汉市环保局空气质量日报
1.前言 目标网站:武汉市环境保护局(http://hbj.wuhan.gov.cn/viewAirDarlyForestWaterInfo.jspx).scrapy对接selenium模块抓取空气质 ...
- 15.scrapy中selenium的应用
引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现 ...
- scrapy中selenium的应用
引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现 ...
- scrapy框架 + selenium 爬取豆瓣电影top250......
废话不说,直接上代码..... 目录结构 items.py import scrapy class DoubanCrawlerItem(scrapy.Item): # 电影名称 movieName = ...
- Scrapy实战篇(八)之Scrapy对接selenium爬取京东商城商品数据
本篇目标:我们以爬取京东商城商品数据为例,展示Scrapy框架对接selenium爬取京东商城商品数据. 背景: 京东商城页面为js动态加载页面,直接使用request请求,无法得到我们想要的商品数据 ...
- scrapy中 selenium(中间件) + 语言处理 +mysql
在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现,通过 ...
随机推荐
- Linux下巧用my.cnf,mysql连接服务器不需要输入账号密码信息
Linux下每次用mysql连接连接服务器,常常用如下方式: [root@localhost ~]# mysql -hlocalhost -uroot -p11111 每次都输入用户名,密码,多折腾人 ...
- Java web 学习之旅
java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户 ...
- 转:java多线程--同步容器
java同步容器 在Java的集合容器框架中,主要有四大类别:List.Set.Queue.Map.List.Set.Queue接口分别继承了Collection接口,Map本身是一个接口.注意Col ...
- ORACLE建表练习
1,学生表 -- Create table create table T_HQ_XS ( xueh ) not null, xingm ) not null, xingb ) ', nianl NUM ...
- WPF控件--利用Winform库中的NotifyIcon实现托盘小程序
WPF控件--NotifyIcon 运行界面如下所示: 图1 图2 代码很少,如下所示 ...
- .net 使用PowerShell获取电脑中的UUID
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OS ...
- Git删除文件操作
使用Git删除文件需要使用Git rm命令来实现,最后git commit 需要注意的是直接rm命令删除后是不可以的,可以用git status 命令尝试一下,效果如图下(创建了test文件,演示了g ...
- Emgu学习之(二)——图像读取、显示、保存
visual Studio Community 2015 工程和源代码:http://pan.baidu.com/s/1o6u5Fdw 内容 在这篇文章中将提到以下内容: 从文件中读取图像 Image ...
- javascript “||”、“&&”的灵活运用
主要介绍了||和 &&的作用 1.|| 和Java中不一样 代表的是 如果左边的true就返回左边 否则返回右边 2.&& 和java中不一样 代表的是 如果左边返回的 ...
- php验证是否是中文
header("content-type:text/html;charset=utf-8");$str = "编";if (preg_match("/ ...