检查 robots.txt 文件是否存在于 python3 中
Checking if robots.txt file exists in python3
我想检查 URL 是否存在 robots.txt
文件。我在 python 3 中发现了 urllib.robotparser
并尝试获得响应。但是我找不到 return robotss.txt
的状态码(或者只是 true/false 存在)的方法
from urllib import parse
from urllib import robotparser
def get_url_status_code():
URL_BASE = 'https://google.com/'
parser = robotparser.RobotFileParser()
parser.set_url(parse.urljoin(URL_BASE, 'robots.txt'))
parser.read()
# I want to return the status code
print(get_url_status_code())
如果您可以使用 requests 模块 强烈推荐
,这并不难
import requests
def status_code(url):
r = requests.get(url)
return r.status_code
print(status_code('https://github.com/robots.txt'))
print(status_code('https://doesnotexist.com/robots.txt'))
否则,如果您想避免使用 GET 请求,您可以使用 HEAD。
def does_url_exist(url):
return requests.head(url).status_code < 400
更好的是,
def does_url_exist(url):
try:
r = requests.head(url)
if r.status_code < 400:
return True
else:
return False
except requests.exceptions.RequestException as e:
print(e)
# handle your exception
我想检查 URL 是否存在 robots.txt
文件。我在 python 3 中发现了 urllib.robotparser
并尝试获得响应。但是我找不到 return robotss.txt
from urllib import parse
from urllib import robotparser
def get_url_status_code():
URL_BASE = 'https://google.com/'
parser = robotparser.RobotFileParser()
parser.set_url(parse.urljoin(URL_BASE, 'robots.txt'))
parser.read()
# I want to return the status code
print(get_url_status_code())
如果您可以使用 requests 模块 强烈推荐
,这并不难import requests
def status_code(url):
r = requests.get(url)
return r.status_code
print(status_code('https://github.com/robots.txt'))
print(status_code('https://doesnotexist.com/robots.txt'))
否则,如果您想避免使用 GET 请求,您可以使用 HEAD。
def does_url_exist(url):
return requests.head(url).status_code < 400
更好的是,
def does_url_exist(url):
try:
r = requests.head(url)
if r.status_code < 400:
return True
else:
return False
except requests.exceptions.RequestException as e:
print(e)
# handle your exception