我的网址格式为
url = "http://www.example.com/search.html#query=test"
将其传递给scrapy.Request为
yield scrapy.Request(url, self.parse_result)
像这样在parse_result
中捡起来
def parse_result(self, response):
print(response.url)
字符串中的最后一位总是被剥离,并打印如下
http://www.example.com/search.html
要从response.url
意思是包括#query=test
的部分完全提取字符串,我需要做什么?尝试使用%23代码而不是井号,但这只是作为数字而不是井号来传递。并使用
urllib.parse.quote(url)
创建值错误:
ValueError: Missing scheme in request
答案 0 :(得分:0)
Peter,问题是服务器永远不会获得hash
(或片段标识符,也就是所谓的片段标识符)。根据{{3}},“其处理完全在客户端”。
在您的情况下,这意味着网页上有一些JS
将在页面加载后提取哈希,对其进行处理并将页面置于实际状态。开箱即用的Scrapy
无法执行JS。因此,您在这里有一些选择:
Network
标签,并尝试查看浏览器是否发出任何XHR / Ajax请求。如果是,则其中可能包含您需要抓取的信息。Inspect Element
-在JS处理后将向您显示html。相反,请使用View page source
-将显示服务器已向您发送的邮件)。