如何使用Requests.Get生成大量网站的状态码列表

How to use Requests.Get to produce a list of status codes for a large number of sites

我是新手 python 程序员,我正在尝试使用请求库查找大量 url 列表的 http 状态代码,将这些状态代码放入它们自己的数组中,然后添加状态代码数组作为新列返回到数据框。

这是我正在使用的代码的一个非常基本的版本。

import requests
import pandas as pd

targets =pd.read_csv('/file/path.csv',header=None)
targetList =targets.values
for i in targetList:
    r = requests.get (f"{i}")
    r.status_code

我不关心数据帧操作,这看起来很简单。而且我可以获得作为离散事件工作的请求

r=requests.get(targetList.item(0))
code=r.status_code
code

200

当我尝试 运行 for 循环时,出现以下错误。

InvalidSchema: No connection adapaters were found for "['https://www.google.com']"

很明显,程序至少能够理解列表中的项目是字符串,并且理解这些字符串的内容。但是发生了我不明白的断开连接。

使用:

targetList.item(0)[2:-2]

以下代码为我重现了您的错误:

import requests
u = "['https://www.google.com']"
r=requests.get(u)
code=r.status_code
code

和以下 returns 200:

import requests
u = "['https://www.google.com']"
r=requests.get(u[2:-2])
code=r.status_code
code

变量 i 为您提供行中所有值的列表 - 即使您只有一列 - 并且您必须从该列表中获取单个值 - 即。 i[0]

import pandas as pd

data = {
    'urls': ['url1','url2','url2'], 
} 

df = pd.DataFrame(data)
 
for row in df.values:
    url = row[0]
    #print('row:', f'{row}')
    #print('url:', f'{url}')
    print('row:', row)
    print('url:', url)

    #requests.get(url)

    print('---')

结果:

row: ['url1']
url: url1
---
row: ['url2']
url: url2
---
row: ['url2']
url: url2
---

或者你应该 select 单列 - df['urls']

for url in df['urls']:
    #print('url:', f'{url}')
    print('url:', url)

    #requests.get(url)

    print('---')    

结果:

url: url1
---
url: url2
---
url: url2
---