【问题标题】:Prefix "http://" valid but actually ""https://"前缀 "http://" 有效但实际上是 ""https://"
【发布时间】:2022-01-28 02:46:42
【问题描述】:

一长串不完整的网站,缺少一些前缀,例如“http://www”。等等

pewresearch.org
narod.ru
intel.com
xda-developers.com
oecd.org

我试过了:

import requests
from lxml.html import fromstring

to_check = [
"pewresearch.org",
"narod.ru",
"intel.com",
"xda-developers.com",
"oecd.org"]

for each in to_check:
    r = requests.get("http://www." + each)
    tree = fromstring(r.content)
    title = tree.findtext('.//title')
    print (title)

他们回来了:

Pew Research Center | Pew Research Center
Лучшие конструкторы сайтов | Народный рейтинг конструкторов для создания сайтов
Intel | Data Center Solutions, IoT, and PC Innovation
XDA Portal & Forums
Home page - OECD

似乎他们都以“http://www.”开头,但不是 - 因为例如,正确的是“https://www.pewresearch.org/”。

使用在线工具或 Python 最快的方法是什么,我可以找到它们完整和正确的地址,而不是在网络浏览器中一一键入它们? (有些可能是 http,有些是 https)

谢谢。

【问题讨论】:

    标签: python html http https


    【解决方案1】:

    编写脚本/短程序向每个站点发送 HEAD 请求。服务器应以重定向响应(例如 HTTPS)。跟踪每个重定向,直到不再收到重定向。

    C# HttpClient 可以follow redirects automatically。

    对于 Python,请参阅 @jterrace 的答案 here,使用 requests 库和下面的代码 sn-p:

    >>> import requests
    >>> r = requests.head('http://github.com', allow_redirects=True)
    >>> r
    <Response [200]>
    >>> r.history
    [<Response [301]>]
    >>> r.url
    u'https://github.com/'
    

    【讨论】:

    • 谢谢!能否请您也提供一种 Python 方法?
    • 当然,查看这个答案以获取 Python 中的示例:stackoverflow.com/a/9967683/5369852
    • 太棒了!你能用引用的代码更新你的答案,以便我们结束这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2019-07-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多