我使用下面的python程序,当我执行它时,我得到一个HTTP403:禁止的错误。
下面是代码:
import os
import re
from bs4 import BeautifulSoup
#import urllib.request
#from urllib.request import request, urlopen
from urllib import request
import pandas as pd
import numpy as np
import datetime
import time
import openpyxl
for a in range(0,len(symbols),1):
"""
Attempt to get past the Forbidden error message.
"""
#ua = UserAgent()
url = "https://fintel.io/ss/us/" + symbols[a]
"""
test urls:
https://fintel.io/ss/us/A
https://fintel.io/ss/us/BBY'
https://fintel.io/ss/us/WMT'
"""
print("Extracting Values for " + symbols[a] + ".")
header = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
}
try:
page_request = request.Request(url, headers=header)
page = request.urlopen(page_request)
#old page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser", from_encoding="iso-8859-1")我得到的结果是:
Extracting Values for A.
HTTP Error 403: Forbidden
Extracting Values for BBY.
HTTP Error 403: Forbidden
Extracting Values for WMT.
HTTP Error 403: Forbidden对如何处理这件事有什么建议吗?
发布于 2021-04-03 03:03:44
这不是一个BeautifulSoup特定的错误,您想要刮的网站可能受到Cloudflare的反机器人页面的保护。您可以尝试使用刮刀来绕过这个问题。
发布于 2021-04-03 03:10:30
你抱怨的是请求,而不是美丽的汤。该网站拒绝满足您的请求。
当我使用该UA时,它可以正常工作,我收到一个200文档:
$ wget -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36' -S https://fintel.io/ss/us/BBY但是,即使使用'Wget/1.20.3 (darwin19.0.0)‘的UA也很好:
$ wget -S https://fintel.io/ss/us/BBY看起来你已经做了过多的爬行,你的IP现在被网络服务器封锁了。
https://stackoverflow.com/questions/66927307
复制相似问题