首页 > 解决方案 > 如何绕过机器人检测并使用 python 抓取网站

问题描述

问题

我是网络抓取的新手,我正在尝试创建一个抓取器,它查看播放列表链接并获取音乐和作者的列表。

但是该站点一直拒绝我的连接,因为它认为我是一个机器人,所以我使用 UserAgent 创建了一个假的 useragent 字符串来尝试绕过过滤器。

它有点工作?但问题是,当你通过浏览器访问网站时,你可以看到播放列表的内容,但是当你尝试通过请求提取 html 代码时,播放列表的内容只是一个很大的空白。

Mabye 我必须等待页面加载?还是有更强大的机器人过滤器?

我的代码

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

ua = UserAgent()

melon_site="http://kko.to/IU8zwNmjM"

headers = {'User-Agent' : ua.random}
result = requests.get(melon_site, headers = headers)


print(result.status_code)
src = result.content
soup = BeautifulSoup(src,'html.parser')
print(soup)

网站链接

播放列表链接

使用请求时得到的 html

带有空格的html,播放列表应该在哪里

标签: pythonweb-scrapingbeautifulsouppython-requestsbotdetect

解决方案



刮痧时要记住的要点


1)使用一个好的用户代理.. ua.random 可能会返回一个被服务器阻止的用户代理

2)如果你正在做太多的抓取,请限制你的抓取速度,使用 time.sleep() 这样服务器可能不会被你的 IP 地址加载,否则它会阻止你。

3)如果服务器阻止您尝试使用 IP 轮换。


推荐阅读