SMT*_*MTH 3 python beautifulsoup web-scraping python-3.x python-requests
我正在尝试创建一个脚本,使用它我可以解析网站中的几个字段而不会被阻止。我希望从中获取数据的站点需要凭据才能访问其内容。如果不是为了登录,我本可以使用代理轮换绕过速率限制。
当我从基于登录的站点抓取内容时,我试图找出任何方法来避免在从那里抓取数据时被该站点禁止。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 post_title in soup.select(".summary > h3 > a.question-hyperlink"):
print(post_title.text)
Run Code Online (Sandbox Code Playgroud)
从基于登录的站点抓取数据时如何避免被禁止?
直接到“任何避免被禁止的有效方法”的地步是没有办法的。
我会将这种情况与鲨鱼袭击进行比较。这是鲨鱼的决定,而不是你的决定。
但是,您可以使用一些技术来减轻“鲨鱼攻击”……但首先,让我们明确表示您首先要“攻击”鲨鱼,并在其领域内游动。
该技术将是:“创建人工抓取脚本”。
human这里的词指的是有时会犯一些随机错误。其中一些列在下面:
但是,最有效的方法是联系网站所有者并提供合作伙伴关系或支付使用 API 或类似方式访问数据的费用(如果他们有此服务)。
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |