Scrapy,URL上的哈希标记

rom*_*oqj 4 python url scrapy web-scraping

我正处于使用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>
Run Code Online (Sandbox Code Playgroud)

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

有没有办法修改此行为,以便Scrapy保留整个URL?

感谢您的反馈和建议.

als*_*lso 10


这不是scrapy本身可以改变的东西 - url中哈希之后的部分是客户端使用的片段标识符(这里是scrapy,通常是浏览器)而不是服务器.

在浏览器中获取页面时可能发生的情况是页面包含一些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中的网络检查器查看这种情况.