【问题标题】:Scrapy, hash tag on URLs网址上的 Scrapy 哈希标记
【发布时间】:2011-09-30 02:05:27
【问题描述】:

我正在使用 Scrapy 进行报废项目。

我意识到 Scrapy 将 URL 从井号标签剥离到末尾。

这是 shell 的输出:

[s]   request    <GET http://www.domain.com/b?ie=UTF8&node=3006339011&ref_=pe_112320_20310580%5C#/ref=sr_nr_p_8_0?rh=n%3A165796011%2Cn%3A%212334086011%2Cn%3A%212334148011%2Cn%3A3006339011%2Cp_8%3A2229010011&bbn=3006339011&ie=UTF8&qid=1309631658&rnid=598357011>
[s]   response   <200 http://www.domain.com/b?ie=UTF8&node=3006339011&ref_=pe_112320_20310580%5C>

这确实影响了我的报废,因为经过几个小时试图找出为什么某些项目没有被选中后,我意识到长 URL 提供的 HTML 与短 URL 提供的 HTML 不同。此外,经过观察,一些关键部分的内容发生了变化。

有没有办法修改这种行为,让 Scrapy 保留整个 URL?

感谢您的反馈和建议。

【问题讨论】:

标签: python url web-scraping scrapy


【解决方案1】:

这不是scrapy本身可以改变的——url中哈希后面的部分是fragment identifier,由客户端(这里是scrapy,通常是浏览器)而不是服务器使用。

当您在浏览器中获取页面时,可能发生的情况是该页面包含一些 JavaScript,这些 JavaScript 查看片段标识符并通过 AJAX 加载一些附加数据并更新页面。您需要查看浏览器的功能,看看您是否可以模拟它——Firebug 或 Chrome 或 Safari 检查器等开发人员工具可以轻松实现这一点。

例如,如果您导航到http://twitter.com/also,您将被重定向到http://twitter.com/#!/also。浏览器在此处加载的实际 URL 只是 http://twitter.com/,但该页面随后会加载用于生成页面的数据 (http://twitter.com/users/show_for_profile.json?screen_name=also),在这种情况下,只是您可以自己解析的 JSON 数据。您可以使用 Chrome 中的网络检查器看到这种情况。

【讨论】:

  • 可以使用 Selenium 来执行 JavaScript 代码,但是,片段标识符会从所有请求中剥离。问题仍然存在:如何生成包含片段标识符的请求?我可以将它包含在元字段中,但 Scrapy 只会加载一个这样的页面,因为它会过滤掉具有重复 URL 的请求。
【解决方案2】:

看来这是不可能的。问题不在于响应,而在于请求中,它切断了 url。

它可以从 Javascript 中检索 - 作为 窗口.位置.哈希。从那里你 可以使用 Ajax 将其发送到服务器 例如,或对其进行编码并放入 进入 URL,然后可以传递 到服务器端。

Can I read the hash portion of the URL on my server-side application (PHP, Ruby, Python, etc.)?

如果服务器没有从浏览器接收到它,为什么你需要这个被剥离的部分? 如果您正在与亚马逊合作 - 我没有发现此类网址有任何问题。

【讨论】:

  • 我发现了一个案例,没有哈希标签的 URL 对折扣产品应用了一种过滤器,因此列出的产品较少。
  • 那您要么没有解决方案,要么尝试提出额外的请求。找到发出请求的算法并发出请求。
【解决方案3】:

实际上,当在网络浏览器中输入该 URL 时,它也只会将哈希标记之前的部分发送到网络服务器。如果内容不同,可能是因为页面上有一些 javascript - 基于哈希标记部分的内容 - 在页面加载后 更改了页面的内容(很可能是XmlHttpRequest 会加载额外的内容)。

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 2012-12-19
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 2017-09-17
    相关资源
    最近更新 更多