我正在尝试进行一些抓取,但每 4 个请求就会被阻止。我试图更改代理,但错误是一样的。我应该怎么做才能正确更改它?
这是我尝试的一些代码。首先,我从一个免费的网络获取代理。然后我使用新代理执行请求,但它不起作用,因为我被阻止了。
from fake_useragent import UserAgent
import requests
def get_player(id,proxy):
ua=UserAgent()
headers = {'User-Agent':ua.random}
url='https://www.transfermarkt.es/jadon-sancho/profil/spieler/'+str(id)
try:
print(proxy)
r=requests.get(u,headers=headers,proxies=proxy)
execpt:
....
code to manage the data
....
Run Code Online (Sandbox Code Playgroud)
def get_proxies():
ua=UserAgent()
headers = {'User-Agent':ua.random}
url='https://free-proxy-list.net/'
r=requests.get(url,headers=headers)
page = BeautifulSoup(r.text, 'html.parser')
proxies=[]
for proxy in page.find_all('tr'):
i=ip=port=0
for data in proxy.find_all('td'):
if i==0:
ip=data.get_text()
if i==1:
port=data.get_text()
i+=1
if ip!=0 and port!=0:
proxies+=[{'http':'http://'+ip+':'+port}]
return proxies
Run Code Online (Sandbox Code Playgroud)
proxies=get_proxies()
for i in range(1,100):
player=get_player(i,proxies[i//4])
....
code to manage the data
....
Run Code Online (Sandbox Code Playgroud)
我知道代理抓取很好,因为当我打印时,我会看到类似的内容: …
我正在尝试创建一个脚本,使用它我可以解析网站中的几个字段而不会被阻止。我希望从中获取数据的站点需要凭据才能访问其内容。如果不是为了登录,我本可以使用代理轮换绕过速率限制。
当我从基于登录的站点抓取内容时,我试图找出任何方法来避免在从那里抓取数据时被该站点禁止。To be specific, my script currently can fetch content from that site flawlessly but my ip address gets banned along the way if I keep on scraping.
到目前为止,我已经写过(将以下站点地址视为占位符):
import requests
from bs4 import BeautifulSoup
url = "https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2f"
with requests.Session() as s:
s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
req = s.get(url)
payload = {
"fkey": BeautifulSoup(req.text,"lxml").select_one("[name='fkey']")["value"],
"email": "some email",
"password": "some password",
}
res = s.post(url,data=payload)
soup = BeautifulSoup(res.text,"lxml")
for …Run Code Online (Sandbox Code Playgroud) python beautifulsoup web-scraping python-3.x python-requests