`
dingr
  • 浏览: 9874 次
  • 性别: Icon_minigender_1
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

用Nokogiri抓取页面URL中有中文的解决办法

阅读更多

我们在使用Nokogiri抓取网站页面的信息时,如果遇到你要抓取页面的URL里有中文,比如 我们拿豆瓣为例

我们要查找豆瓣里的一本书 :《sql语言艺术》他的查找URL是:http://book.douban.com/subject_search?search_text=SQL语言艺术&cat=1001

那么 你直接这样写代码的时候

   

url="http://book.douban.com/subject_search?search_text=SQL语言艺术=1001"
Nokogiri::HTML(open(url))

就会报错,因为浏览器打包给服务器发送参数的时候是经过编码的,所以我们也要给汉字经过一次编码,只需在这两句中间加上一句就可以了

url=URI.escape(url)

这样 rul 字符串就被编码成 这样:sql%E8%AF%AD%E8%A8%80%E8%89%BA%E6%9C%AF就没问题了

注意:上边的编码是吧 一个汉字转换成三个字节 语 -》%E8%AF%AD(看百分号就知道到了)如果你要抓取的网站编码是GBK 那么 要把它转换成 一个汉字 对应成 2个字节,%E8%AF 。

 

2
2
分享到:
评论
2 楼 dingr 2010-04-19  
呵呵 我感觉好像是一回事 你可以作个测试 你找个GBK的抓取以下
1 楼 Hooopo 2010-04-19  
引用
注意:上边的编码是吧 一个汉字转换成三个字节 语 -》%E8%AF%AD(看百分号就知道到了)如果你要抓取的网站编码是GBK 那么 要把它转换成 一个汉字 对应成 2个字节,%E8%AF 。


URL编码和网站编码不是一回事吧?

相关推荐

    显示页面所有链接.rar

    在网页开发和网络爬虫领域,获取页面上的所有链接是一项常见的任务。"显示页面所有链接"这个主题涉及到了HTML解析、DOM操作以及可能的网络请求技术。以下是对这个主题的详细解释: 首先,HTML(超文本标记语言)是...

    ruby实现网页图片抓取

    `for`循环用于迭代页面,`Nokogiri::HTML(open(site_url+'/share/comment-page-'+index_page.to_s))`这一行代码用Open-URI打开URL,并使用Nokogiri解析HTML内容。 接着,`doc_html.css("#comments p img")`这段代码...

    网络蜘蛛最新源码

    5. 存储机制:将抓取的数据存储在本地文件、数据库或其他存储解决方案中。 6. 异常处理:处理网络错误、编码问题、网页结构变化等异常情况。 三、网络蜘蛛的编程语言 网络蜘蛛可以使用多种编程语言实现,如Python...

    Ruby实现网页图片抓取

    - **使用示例**:如代码中的 `open` 方法用于打开并读取指定 URL 的内容。 ```ruby doc_html = Nokogiri::HTML(open('http://www.xxx.com/share/comment-page-1')) ``` ##### 3. Ruby 基本语法:模块、方法定义...

    ruby写的网络蜘蛛

    8. 避免重复抓取:使用哈希表或数据库记录已抓取的URL,确保同一页面不被多次抓取。 9. 考虑反爬策略:许多网站会设置反爬策略,如User-Agent检测、验证码、访问频率限制等。开发者需要合理设置爬虫的行为,避免...

    ruby-scraping:一堆为@LeWagon 学生抓取的 ruby​​ 脚本

    4. **异步请求**:对于大量或快速更新的网站,使用异步请求库如Typhoeus或HTTParty可以提高抓取效率,避免阻塞并行处理多个URL。 5. **错误处理与重试**:网络抓取过程中可能会遇到各种问题,如服务器超时、重定向...

    爬虫20220803pm

    4. 爬虫循环:不断抓取新页面,直到满足停止条件(如达到指定深度、抓取特定数量的页面)。 5. 数据存储:将抓取到的数据存储到文件、数据库或其他系统。 四、爬虫常见问题与解决策略 1. 反爬机制:网站常设置...

    Crawler:用于网站抓取的Web搜寻器

    2. **定义爬虫逻辑**:确定要爬取的网站、URL模式和抓取的页面范围。通常,爬虫会从一个或多个起始URL开始,然后按照链接关系遍历整个网站。 3. **发送HTTP请求**:使用Guzzle发送GET请求到目标URL,获取HTML响应。...

    jsoup-1.8.1.jar

    对于大规模的数据抓取,可能需要结合其他高性能的库,如Nokogiri(Python)或 HtmlAgilityPack(C#)。 ### 6. 集成与依赖 jsoup-1.8.1.jar是一个独立的库,可以直接添加到Java项目中。对于Maven项目,可以在pom....

    NokogiriWebScrapTest1

    Nokogiri是一个在Ruby编程语言中广泛使用的库,用于解析HTML...在实践中,你可能会遇到各种挑战,如动态加载的内容、JavaScript渲染、登录验证等,这些都是网页抓取中常见的问题,需要你利用Nokogiri和其他工具来解决。

    web-scrapping-mechanize-firstmeetup:阿方索·曼西拉 (Alfonso Mancilla) 在第一次 ruby​​ 聚会中使用机械化进行网页抓取的示例

    网页抓取,也称为网络爬虫或数据抓取,是一种自动化技术,用于从互联网上提取大量数据。在本示例中,"web-scrapping-mechanize-firstmeetup" 是一个项目,由阿方索·曼西拉(Alfonso Mancilla)在一次 Ruby 聚会上...

    [搜索链接]Java网络爬虫(蜘蛛)源码_zhizhu.zip

    在本文中,我们将深入探讨Java网络爬虫的基本原理、相关技术以及如何使用Java JSP来实现。 1. 网络爬虫基础: 网络爬虫是一种自动化浏览互联网并下载网页的程序。它们通过遵循网页上的超链接,遍历整个网站甚至...

    scrapping_mairies

    【标题】"scrapping_mairies" 是一个与数据抓取相关的项目,主要涉及使用 Ruby 语言进行网页抓取。这个项目的重点在于从市政厅(mairies)的网站上提取信息,可能包括公共服务、活动通知、政策法规等数据。 【描述...

    Ruby-Mechanize一个让自动化web交互变得容易的ruby库

    在实际应用中,Mechanize通常与其他Ruby库结合使用,如Nokogiri进行更精细的HTML解析,或者CSV、YAML等库来存储和处理抓取的数据。此外,还可以使用如Selenium这样的库进行更高级的浏览器控制,以处理JavaScript渲染...

    recursive-web-crawler:ruby 中的简单递归网络爬虫

    在Ruby编程语言中,开发一个简单的递归网络爬虫(Recursive Web Crawler)是一个常见的任务,主要用于抓取互联网上的信息并构建站点地图。这个名为"recursive-web-crawler"的项目,提供了一个基本的实现,可以帮助...

    rental_site_scraper

    在开发过程中,你需要考虑各种可能出错的情况,比如网络连接问题、无效的 URL、无法解析的页面结构等,编写对应的异常处理代码,确保程序的健壮性。 总的来说,通过 "rental_site_scraper" 项目,你不仅能掌握 Ruby...

    melton_scraper

    1. **配置设置**:项目可能有一个配置文件,其中包含目标URL、请求头、抓取间隔等信息,以确保合规和有效的抓取。 2. **网络请求**:使用HTTP客户端库向梅尔顿市议会的网站发送GET请求,获取规划申请页面的HTML内容...

    基于Java的网络爬虫+源代码+demo+蜘蛛

    2. **URL处理**:Java提供了`java.net.URL`类用于解析和操作URL,包括连接、打开和读取网页内容。 3. **HTTP客户端库**:Java标准库提供了`java.net.HttpURLConnection`,但更常用的是第三方库,如Apache ...

Global site tag (gtag.js) - Google Analytics