我想在 jupyter 笔记本上使用
requests.get()
从网站获取一些内容,Python 版本为 3.10。
该网站是一个简单的搜索引擎,带有搜索栏和一些按钮。
当我输入
apple
时,浏览器会显示以 ?search=apple
结尾的 URL。当我输入 α
时,浏览器会显示一个以 ?search=%u03B1
结尾的 URL。
我尝试使用以下代码获取内容:
import requests
def search(keyword):
url = "xxxxxxxxxxx.asp"
params = { 'search': key }
headers = { ... }
res = requests.get(url, params=params, headers=headers)
return res.content
search('α')
但是,这并没有返回“α”的结果。相反,它返回繁体汉字
帢
的搜索结果。
search("%u03B1")
然后我尝试了这个,但它返回的结果是“%u03B1”而不是“α”。
我该如何解决这个问题?
(我尝试过的)
输入( ) |
url(我实际得到的) | 搜索结果( ) |
---|---|---|
|
|
包含
|
|
|
包含
|
|
|
包含
|
|
|
包含
|
|
|
包含
|
|
|
包含
|
... | ... | ... |
(我期望的样子)
输入(使用网站的搜索栏) | url(我在浏览器上看到的) | 搜索结果(浏览器) |
---|---|---|
|
|
包含
|
|
|
包含
|
|
|
包含
|
... | ... | ... |
您可能需要使用
ord()
手动构建 URL。 ord()
返回字符的 Unicode 代码点。
例如,
def search(keyword):
url = "<your_url>"
encoded_keyword = '%u{:04X}'.format(ord(keyword))
params = {'search': encoded_keyword}
headers = <your_headers>
res = requests.get(url, params=params, headers=headers)
print(res.url) # %25u03B1
return res.content
print(search('α'))
希望这会起作用。