ITPub博客

首页 > 人工智能 > 人工智能 > 面向初学者的网页抓取:如何礼貌地收集数据并避免被封禁

面向初学者的网页抓取:如何礼貌地收集数据并避免被封禁

人工智能 作者:ITPUB社群 时间:1970-01-01 08:33:46 0 删除 编辑

当人们第一次听说网页抓取时,往往会觉得这是某种黑客行为。其实不是。抓取只是让一个小程序读取网页,并挑出你想要的部分,比如价格、标题或职位名称,这样你就不必手动复制它们。

最让新手受挫的部分是被封禁。你运行脚本几次后,网站突然不再响应。这通常是因为脚本的行为不像任何正常访客。好消息是,大多数封禁都很容易避免。

开始前先阅读规则

在浏览器中输入网站地址,并在后面加上 /robots.txt(例如 website.com/robots.txt )。这个文件会告诉自动化工具它们可以访问哪些页面。如果某个页面被禁止访问,就不要碰它。也值得快速浏览一下网站的服务条款。

先检查是否有 API(应用程序编程接口)

许多网站已经通过官方 API 共享数据。这种方式更干净、被允许,而且可能让你完全不必编写抓取器。

不要催促网站

脚本可以在几秒内发送数百个请求,而在服务器看来,这就像一次攻击。请求之间暂停一两秒通常就足以避免麻烦。

说明你是谁

添加一个 User-Agent(智能体),其中包含你的项目名称和联系邮箱。这很诚实,而且网站所有者通常会对主动介绍自己的访客更宽容。

一个 Python 小示例

下面是一个把这些习惯结合起来的简短脚本。你需要先安装两个库:pip install requests beautifulsoup4 。

import
time
import
requests
from
bs4
import
BeautifulSoup
headers
=
{
"
User-Agent
"
:
"
MyLearningBot/1.0 (contact: you@email.com)
"
}
urls
=
[
"
https://example.com/page1
"
,
"
https://example.com/page2
"
]
for
url
in
urls
:
response
=
requests
.
get
(
url
,
headers
=
headers
,
timeout
=
10
)
if
response
.
status_code
==
200
:
soup
=
BeautifulSoup
(
response
.
text
,
"
html.parser
"
)
print
(
soup
.
title
.
text
)
time
.
sleep
(
2
)
# wait 2 seconds between requests

遇到 429 错误该怎么办

429 表示“请求过多”。停下来,等一会儿,并放慢脚本速度。强行继续通常会让情况更糟。

关于代理的简要说明

你会在爬虫社区中经常看到有人提到代理。它们通过不同的地址发送你的请求,在大型、合法的项目中确实有实际用途。但它们并不是无视网站规则的手段,初学者也不需要代理。

总结

坚持只抓取公开数据,保持低速,绝不收集个人信息。礼貌地抓取可以让你远离麻烦,也让网络对每个人都保持可用。


转载声明:本文为转载整理,原文版权归原作者及原站点所有。

原文来源:DEV.to

原创地址:https://dev.to/oyinkansola_bakareaminat/web-scraping-for-beginners-how-to-collect-data-politely-and-avoid-getting-blocked-1034

原文作者:OYINKANSOLA BAKARE AMINAT;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    1090
  • 访问量
    547014