我想要这个
www.example.com/?category=electronics&gadget=mouse
看起来像这样:
www.example.com/?electronics/mouse
我通过对普通查询执行XHR
请求来提取数据。但是我希望通过使用URL
以最易读的方式在history.pushState()
中显示过滤器查询。并且在重新加载时,它应该保留在同一页面上。
注意,这里有“?”在第二个网址的“ /”之后。
答案 0 :(得分:1)
您可以获取当前URL并解析出def get_company_register_number(string, keyword):
reg_1 = fr'\b{keyword}\b[,:|\s]*(\w+)'
match = re.compile(reg_1)
company_register_number = match.findall(string) # list of matched words
if company_register_number: # not empty
return company_register_number
else: # no match found
company_register_number = []
return company_register_number
string = "HRB: 21156"
get_company_register_number(string, 'HRB')
>>>>>> ['21156']
之后的文本。
?
这将按每个const query = location.href.split("?").pop()
拆分当前URL,并返回最后一个项目。
然后,您可以按其结构检索参数。
?
这会将查询的第一个索引和第二个索引(分别由const [category, gadget] = query.split("/")
分配给变量/
和category
。就是这样做。
gadget
使用这两个变量,您可以在var parts = query.split("/")
var category = parts[0]
var gadget = parts[1]
请求中传递正确的数据。
对于历史记录请求,只要您在加载时运行XHR
请求,您的页面每次都会反映正确的信息。您还可以阅读Window popstate events来检测XHR
中的变化。
编辑:现在只阅读关于SEO的关注。使用SEO可以用这种方法做的事很少,因为大多数SEO搜寻器在解析信息时不会运行Javascript。对于大多数爬虫来说,拥有Javascript注入元将毫无用处。抱歉。正如CBroe所说,您需要为此进行服务器端渲染。