gpt4 book ai didi

Python - 如何获取维基百科将我重定向到的页面?

转载 作者:可可西里 更新时间:2023-11-01 15:28:02 24 4
gpt4 key购买 nike

我想存储几个不同的 Wikipedia 链接,但我不想存储指向同一页面的两个不同链接两次。例如,以下链接是不同的,但它们指向相同的维基百科页面:

https://en.wikipedia.org/w/index.php?title=(1S)-1-Methyl-2,3,4,9-tetrahydro-1H-pyrido-3,4-b-indole&redirect=no 
https://en.wikipedia.org/w/index.php?title=(1S)-1-methyl-2,3,4,9-tetrahydro-1H-pyrido-3,4-b-indole&redirect=no
__________________________________________________|___________________________________________________________

唯一的区别是一个大写字符。或以下链接:

https://en.wikipedia.org/wiki/(0,1)-matrix 
https://en.wikipedia.org/wiki/(0,1)_matrix
___________________________________|______

这只是不同,因为一个有'-',另一个有'_'(' ')。所以我想要的是只存储其中一个或以下链接:

https://en.wikipedia.org/wiki/Tetrahydroharman 
https://en.wikipedia.org/wiki/Logical_matrix

我已经试过这个 SO question 的答案了.但这对我不起作用。 (结果是我的初始 URL,而不是 wiki 在浏览器中将我重定向到的那个)那么我怎样才能实现我正在寻找的东西!?

最佳答案

由于维基百科没有正确的 301/302 重定向,当您打开链接时会返回正确的 200 成功响应,然后使用 JS 更改 url

我想出了一个快速可行的解决方案。首先,删除 &redirect=no来自网址

In [42]: import requests

In [43]: r = requests.get('https://en.wikipedia.org/w/index.php?title=(1S)-1-Met
...: hyl-2,3,4,9-tetrahydro-1H-pyrido-3,4-b-indole')

In [44]: tmp = r.content.replace('<link rel="canonical" href="', 'r@ndom}-=||').
...: split('r@ndom}-=||')[-1]

In [45]: idx = tmp.find('"/>')

In [46]: real_link = tmp[:idx]

In [47]: real_link
Out[47]: 'https://en.wikipedia.org/wiki/Tetrahydroharman'

真正的URL值存储在<link rel="canonical" href="中标签。

您可以使用上述方法,这对您的用例来说已经足够好了,或者您可以使用像 bs4 这样的库来解析页面并获取链接,或者使用正则表达式来提取链接。

关于Python - 如何获取维基百科将我重定向到的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47537644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com