我正在研究scrapy
我有一个包含哈希标记的网站,但是当我运行它时,scrapy通过忽略哈希标记来下载响应
例如,这是包含hash fragments
,url="www.example.com/hash-tag.php#user_id-654"
的网址
并且此请求的响应仅为www.example.com/hash-tag.php
,但我想用哈希片段抓取url。
我的代码在
下面 class ExampleSpider(BaseSpider):
name = "example"
domain_name = "www.example.com"
def start_requests(self):
return Request("www.example.com/hash-tag.php#user_id-654")
def parse(self):
print response
结果:
<GET www.example.com/hash-tag.php>
我怎么能这样做...... 提前致谢................
答案 0 :(得分:0)
你想要做的事情并不容易。要实现您的目标,您需要一个完整的DOM和JavaScript引擎,即(可能是无头的)浏览器。
如果您确实需要它,请查看PhantomJS。它是WebKit引擎,但完全无头。我不确定scrapy是否可以轻松扩展,但如果你真的想要执行JavaScript(在这种情况下你需要),使用PhantomJS可能就是这样。
答案 1 :(得分:0)
如果您真的需要这些信息,您可以在调用Request之前先拆分字符串,然后将该信息作为元发送。
像
这样的东西url = "www.example.com/hash-tag.php#user_id-654"
hash = url.split("#")[1]
request = Request(url, callback=self.parse_something)
request.meta['after_hash'] = hash
yield request
然后解析get并像
一样使用它def parse_something(self, response):
hash = response.meta['after_hash']
即如果你只是在哈希标志后需要这些信息。