首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-3尝试遍历csv并获取http响应代码

Python-3尝试遍历csv并获取http响应代码
EN

Stack Overflow用户
提问于 2020-11-11 02:18:21
回答 1查看 52关注 0票数 0

我正在尝试读取包含长urls列表的csv文件。我需要遍历列表并获得抛出301、302或404响应的urls。在尝试测试脚本时,我得到了一个带有代码0的退出,所以我知道它是没有错误的,但它并没有按照我需要的方式运行。我是python的新手,并且使用文件,我的经验主要是ui自动化。如有任何建议,我们将不胜感激。下面是代码。

代码语言:javascript
复制
import csv
import requests
import responses
from urllib.request import urlopen
from bs4 import BeautifulSoup

f = open('redirect.csv', 'r')
contents = []
with open('redirect.csv', 'r') as csvf:  # Open file in read mode
    urls = csv.reader(csvf)
    for url in urls:
        contents.append(url)  # Add each url to list contents
    


def run():
    resp = urllib.request.urlopen(url)
    print(self.url, resp.getcode())
    run()


print(run)
EN

回答 1

Stack Overflow用户

发布于 2020-11-11 02:37:36

假设您有一个类似以下内容的CSV (标题为URL)

代码语言:javascript
复制
URL
https://duckduckgo.com
https://bing.com

您可以使用requests library来做这样的事情。

代码语言:javascript
复制
import csv
import requests

with open('urls.csv', newline='') as csvfile:
    errors = []
    reader = csv.DictReader(csvfile)
    # Iterate through each line of the csv file
    for row in reader:
        try:
            r = requests.get(row['URL'])
            if r.status_code in [301, 302, 404]:
                # print(f"{r.status_code}: {row['url']}")
                errors.append([row['url'], r.status_code])
        except:
            pass

如果希望在终端中查看结果,请取消对print语句的注释。此时的代码将URL和状态代码的列表附加到errors列表中。如果愿意,您可以打印或继续处理此文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64774564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档