- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
昨天当我尝试Scrapy
时,我试图获取一个中文Ruby论坛的帖子标题。但是,不知何故,Scrapy
的输出都是 Unicode
,就像
"[\u5317\u4eac][2017\u5e746\u670818\u65e5] Rails Girls"
我检查了响应的编码是UTF-8
,并且打印出了正确显示中文字符的body内容。
所以,我很困惑为什么我使用 Scrapy 选择器来选择标题并将输出放入 Json 文件。那么,文件的内容都是字符指针,如\u5317
。任何帮助将不胜感激。谢谢。
我的代码:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['https://ruby-china.org/topics']
def parse(self, response):
self.logger.warning("body: %s", response.body)
for topic in response.css('div.topic'):
title = topic.css('div.media-heading')
yield {'title': title.css('a ::attr(title)').extract_first()}
最佳答案
当 Scrapy 使用 URL 响应调用回调时,响应包含解码后的 Unicode 正文内容(如 response.text
),以及接收到的正文的“原始”字节(采用任何编码)被用作 response.body
。
当您使用从 response.xpath()
或 response.css()
调用获得的 Scrapy 选择器时,并且调用 .extract()
在它们上,你会得到 Python Unicode 字符串。
Python 2.7 使用 \uXXXX
转义序列来表示它们。这就是您在生成的项目的控制台日志中看到的内容。
但是如果您对这些字符串调用 print ,您会看到字符本身:
$ scrapy shell https://ruby-china.org/topics
2017-05-23 13:15:33 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapybot)
(...)
2017-05-23 13:15:33 [scrapy.core.engine] INFO: Spider opened
2017-05-23 13:15:35 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://ruby-china.org/topics> (referer: None)
(...)
>>> for topic in response.css('div.topic'):
... title = topic.css('div.media-heading')
... print(title.css('a ::attr(title)').extract_first())
...
[北京][2017年6月18日] Rails Girls 复活啦 2017 北京活动报名 | 少女们一天学编程
招 ruby 开发偏执狂,分享产品成果
challenge #1
[上海/成都] Le Wagon 编程训练营招聘 Ruby 导师,2200/ 天
量产型炮灰工程师
如果开发公众号内的小应用,rails 前端搭配哪个框架,vue?react?angular?
[长沙] Kdan Mobile 招聘 Ruby on Rails 工程师 (9K~15K)
Ruby 开发有什么新的进展吗?PHP 貌似要上 JIT 了!
这种需要强行增加对象阅读数,有其他建议吗?
rails 项目,production 模式在 ie8 下报"'undefined' 为空或不是对象"错误
pwc (sdc) 招后端,前端,区块链应用开发。
我想做个类似 app 中的消息中心,比如我下完订单,就会提示我订单的状态!
[上海] 郎客信息技术有限公司招聘 Rails 实习生 2 名
Rails 5.1 使用 yarn 和 webpack 实战 (vue, 构建等)
[上海] 赛若福诚聘 Ruby 工程师
[上海&杭州] Change 健身潮流文化社区招收 Ruby 工程师 (15-40k 十四薪)
[宁波] 新希望软件 Ruby 工程师 3 名 [8k~12k]
如何禁用下拉列表
為你自己學 Ruby on Rails
使用 RSpec 在 Rails 5 下测试邮件的发送
GitHub API v4 改用 GraphQL 了
[上海] 2017.5.21 Elixir Meetup
多态情况下关联表查询问题
Rails 与 Django 性能的疑问
[北京] 西单,金融方向,欢迎 Ruby 大牛 [15k~30k]
云梯正式开通 Telegram 官方频道
>>>
现在,如果您将项目导出为 JSON,例如使用 -o items.json
,默认情况下,Scrapy 也会在 JSON 中写入 \uXXXX
转义序列不同项目的字符串。它与 Python 2.7 表示非 ASCII 字符的方式相同,这是 100% 有效的 JSON 输出,实际上是 Python 的 json
模块的默认设置(称为 ensure_ascii
) .
如果你确实需要在 JSON 输出文件中使用 UTF-8 字符,你可以使用 Scrapy 的 FEED_EXPORT_ENCODING='utf-8'
setting .
关于python - Scrapy响应编码不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44128899/
在一个 scrapy 项目中,人们经常使用中间件。在交互式 session 期间是否也有一种通用方法可以在 scrapy shell 中启用中间件? 最佳答案 尽管如此,在 setting.py 中设
我想对网页中向下滚动生成的内容进行反向工程。问题出在url https://www.crowdfunder.com/user/following_page/80159?user_id=80159&li
我需要帮助将相对URL转换为Scrapy Spider中的绝对URL。 我需要将起始页面上的链接转换为绝对URL,以获取起始页面上已草稿的项目的图像。我尝试使用不同的方法来实现此目标失败,但是我陷入了
我在 Scrapy Python 中制作了一个脚本,它在几个月内一直运行良好(没有更改)。最近,当我在 Windows Powershell 中执行脚本时,它引发了下一个错误: scrapy craw
我已经从 docker 启动了 splash。我为 splash 和 scrapy 创建了大的 lua 脚本,然后它运行我看到了问题: Lua error: error in __gc metamet
我正在使用scrapy 来抓取网站,但发生了不好的事情(断电等)。 我想知道我怎样才能从它坏了的地方继续爬行。我不想从种子开始。 最佳答案 这可以通过将预定的请求持久化到磁盘来完成。 scrapy c
有人可以向我解释一下 Scrapy 中的暂停/恢复功能是如何实现的吗?作品? scrapy的版本我正在使用的是 0.24.5 documentation没有提供太多细节。 我有以下简单的蜘蛛: cla
我想将 apscheduler 与 scrapy.but 我的代码是错误的。 我应该如何修改它? settings = get_project_settings() configure_logging
我正在抓取一个网站并解析一些内容和图像,但即使对于 100 页左右的简单网站,完成这项工作也需要数小时。我正在使用以下设置。任何帮助将不胜感激。我已经看过这个问题- Scrapy 's Scrapyd
我正在抓取一个网站并解析一些内容和图像,但即使对于 100 页左右的简单网站,完成这项工作也需要数小时。我正在使用以下设置。任何帮助将不胜感激。我已经看过这个问题- Scrapy 's Scrapyd
我是爬行新手,想知道是否可以使用 Scrapy 逐步爬行网站,例如 CNBC.com?例如,如果今天我从一个站点抓取所有页面,那么从明天开始我只想收集新发布到该站点的页面,以避免抓取所有旧页面。 感谢
我是scrapy的新手。我正在尝试从 here 下载图像.我在关注 Official-Doc和 this article . 我的 settings.py 看起来像: BOT_NAME = 'shop
我在使用 scrapy 时遇到了一些问题。它没有返回任何结果。我试图将以下蜘蛛复制并粘贴到 scrapy shell 中,它确实有效。真的不确定问题出在哪里,但是当我用“scrapy crawl rx
如何使用 Scrapy 抓取多个 URL? 我是否被迫制作多个爬虫? class TravelSpider(BaseSpider): name = "speedy" allowed_d
当我使用splash渲染整个目标页面来爬取整个网站时出现问题。某些页面不是随机成功的,所以我错误地获取了支持渲染工作完成后出现的信息。这意味着我尽管我可以从其他渲染结果中获取全部信息,但仅从渲染结果中
如何使用 Scrapy 抓取多个 URL? 我是否被迫制作多个爬虫? class TravelSpider(BaseSpider): name = "speedy" allowed_d
我的scrapy程序无论如何只使用一个CPU内核CONCURRENT_REQUESTS我做。 scrapy中的某些方法是否可以在一个scrapy爬虫中使用所有cpu核心? ps:好像有争论max_pr
我最近用 python 和 Selenium 做了一个网络爬虫,我发现它做起来非常简单。该页面使用 ajax 调用来加载数据,最初我等待固定的 time_out 来加载页面。这工作了一段时间。之后,我
我想用这个命令运行 scrapy 服务器: scrapy server 它失败了,因为没有项目。然后我创建一个空项目来运行服务器,并成功部署另一个项目。但是,scrapy 服务器无法处理这个项目,并告
我正在创建一个网络应用程序,用于从不同网站抓取一长串鞋子。这是我的两个单独的 scrapy 脚本: http://store.nike.com/us/en_us/pw/mens-clearance-s
我是一名优秀的程序员,十分优秀!