gpt4 book ai didi

python - 如何绕过机器人检测并使用 python 抓取网站

转载 作者:行者123 更新时间:2023-12-04 16:27:10 24 4
gpt4 key购买 nike

问题
我是网络抓取的新手,我试图创建一个抓取器,它查看播放列表链接并获取音乐和作者的列表。
但是该站点一直拒绝我的连接,因为它认为我是一个机器人,所以我使用 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)

网站链接
playlist link
我在使用请求时得到的 html
html with blank space where the playlist was supposed to be

最佳答案

你想看看this link获取您想要抓取的内容。

以下尝试应该为您获取艺术家姓名和他们的歌曲名称。

import requests
from bs4 import BeautifulSoup

url = 'https://www.melon.com/mymusic/playlist/mymusicplaylistview_listSong.htm?plylstSeq=473505374'

r = requests.get(url,headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(r.text,"html.parser")
for item in soup.select("tr:has(#artistName)"):
artist_name = item.select_one("#artistName > a[href*='goArtistDetail']")['title']
song = item.select_one("a[href*='playSong']")['title']
print(artist_name,song)

输出如下:
Martin Garrix - 페이지 이동 Used To Love (feat. Dean Lewis) 재생 - 새 창
Post Malone - 페이지 이동 Circles 재생 - 새 창
Marshmello - 페이지 이동 Here With Me 재생 - 새 창
Coldplay - 페이지 이동 Cry Cry Cry 재생 - 새 창

注意:您的 BeautifulSoup版本应该是 4.7.0或稍后以便脚本支持伪选择器。

关于python - 如何绕过机器人检测并使用 python 抓取网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61400692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com