页面通过js加载怎么爬虫 ruby实现

Python013

页面通过js加载怎么爬虫 ruby实现,第1张

Ruby中爬虫的实现

Ruby中实现网页抓取,一般用的是mechanize,使用非常简单。 安装

sudo gem install mechanize

抓取网页

require 'rubygems'

require 'mechanize'

agent = Mechanize.new

page = agent.get('http://google.com/')

模拟点击事件

page = agent.page.link_with(:text =>'News').click

模拟表单提交

google_form = page.form('f')

google_form["q"] = 'ruby mechanize'

page = agent.submit(google_form, google_form.buttons.first)

pp page

分析页面,mechanize用的是nokogiri解析网页的,所以可以参照nokogiri的文档

table = page.search('a')

text = table.inner_text

puts text

有几点注意的地方: 如果需要先登录的网页,那么可以在网站先登录,登录后记录JSESSIONID,然后赋值给agent

cookie = Mechanize::Cookie.new("JSESSIONID", "BA58528B76124698AD033EE6DF12B986:-1")

cookie.domain = "datamirror.csdb.cn"

cookie.path = "/"

agent.cookie_jar.add!(cookie)

如果需要保存网页,使用.save_as,(或许save也可以,我没试过)例如

agent.get("google.com").save_as

具体原因如下:

1、抓取网页本身接口

相比其他静态编程语言,如java、c#、c++,python抓取网页文档的接口更简洁,相比其他动态脚本语言,如shell、perl,python的urlib2包提供了较为完整的访问网页文档的api,当然,ruby也是很好的选择。

抓取网页有时需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。

这是我们需要模拟user

agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requests,mechanize

2、网页抓取后的处理

抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。

python语言在linux上很强大,语言也非常简单。

快速开发:唯一能和python比开发效率的语言只有rudy,语言简洁,没有那么多技巧,所以读起来也更容易。

跨平台:由于python的开源,它比java更能体现“一次编写到处运行”。

解释性:无须编译,直接运行/调试代码。

构架选择太多:gui构架方面,主要的就有wxpython、tkinter、pygkt、pyqt。

爬虫一般是指网络资源的抓取,因为python的脚本特性,python易于配置,对字符的处理也非常灵活,加上python有丰富的网络抓取模块,所以两者经常联系在一起。 简单的用python自己的urllib库也可以用python写一个搜索引擎,而搜索引擎就是一个复杂的爬虫。从这里你就了解了什么是Python爬虫,是基于Python编程而创造出来的一种网络资源的抓取方式,Python并不是爬虫。

Python为什么适合些爬虫?

1)抓取网页本身的接口

相比与其他静态编程语言,如java,c#,C++,python抓取网页文档的接口更简洁相比其他动态脚本语言,如perl,shell,python的urllib2包提供了较为完整的访问网页文档的API。(当然ruby也是很好的选择)

此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requests,mechanize

2)网页抓取后的处理

抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。Life is short, u need python.