首页 > 人工智能 > 人工智能 > 面向初学者的网页抓取:如何礼貌地收集数据并避免被封禁
当人们第一次听说网页抓取时,往往会觉得这是某种黑客行为。其实不是。抓取只是让一个小程序读取网页,并挑出你想要的部分,比如价格、标题或职位名称,这样你就不必手动复制它们。
最让新手受挫的部分是被封禁。你运行脚本几次后,网站突然不再响应。这通常是因为脚本的行为不像任何正常访客。好消息是,大多数封禁都很容易避免。
在浏览器中输入网站地址,并在后面加上 /robots.txt(例如 website.com/robots.txt )。这个文件会告诉自动化工具它们可以访问哪些页面。如果某个页面被禁止访问,就不要碰它。也值得快速浏览一下网站的服务条款。
许多网站已经通过官方 API 共享数据。这种方式更干净、被允许,而且可能让你完全不必编写抓取器。
脚本可以在几秒内发送数百个请求,而在服务器看来,这就像一次攻击。请求之间暂停一两秒通常就足以避免麻烦。
添加一个 User-Agent(智能体),其中包含你的项目名称和联系邮箱。这很诚实,而且网站所有者通常会对主动介绍自己的访客更宽容。
下面是一个把这些习惯结合起来的简短脚本。你需要先安装两个库: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 requests429 表示“请求过多”。停下来,等一会儿,并放慢脚本速度。强行继续通常会让情况更糟。
你会在爬虫社区中经常看到有人提到代理。它们通过不同的地址发送你的请求,在大型、合法的项目中确实有实际用途。但它们并不是无视网站规则的手段,初学者也不需要代理。
坚持只抓取公开数据,保持低速,绝不收集个人信息。礼貌地抓取可以让你远离麻烦,也让网络对每个人都保持可用。
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:DEV.to
原文作者:OYINKANSOLA BAKARE AMINAT;如有侵权,请联系管理员删除。