Python请求不重定向

我正在尝试抓取单词定义,但无法让 python 重定向到正确的页面。例如,我试图获得“agenesia”这个词的定义。当您在浏览器中使用https://www.lexico.com/definition/agenesia加载该页面时,加载的页面是https://www.lexico.com/definition/agenesis,但在 Python 中该页面不会重定向并给出 200 状态码

URL = 'https://www.lexico.com/definition/agenesia'
page = requests.head(URL, allow_redirects=True)

这就是我目前检索页面内容的方式,我也尝试过使用,requests.get
但这也不起作用

编辑:因为不清楚,我知道我可以在 URL 中将单词更改为“agenesis”以获得正确的页面,但我正在抓取单词列表并且宁愿自动跟随 URL 而不是搜索首先在浏览器中手动重定向。

编辑 2:我意识到用我的其余代码检查解决方案可能更容易,到目前为止,这适用于agenesis但不适用agenesia

soup = BeautifulSoup(page.content, 'html.parser')

print(soup.find("span", {"class": "ind"}).get_text(), 'n')
print(soup.find("span", {"class": "pos"}).get_text())

回答

前面提到的其他答案不会使您的请求重定向。原因是您没有使用正确的请求标头。试试下面的代码:

import requests
from bs4 import BeautifulSoup

headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
}

page = requests.get('https://www.lexico.com/definition/agenesia', headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')

print(page.url)
print(soup.find("span", {"class": "ind"}).get_text(), 'n')
print(soup.find("span", {"class": "pos"}).get_text())

并打印:

https://www.lexico.com/definition/agenesis?s=t
Failure of development, or incomplete development, of a part of the body. 

noun


以上是Python请求不重定向的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>