Как обойти обнаружение ботов и удалить сайт, используя python - PullRequest
0 голосов
/ 24 апреля 2020

Проблема

Я был новичком в очистке веб-страниц и пытался создать скребок, который просматривает ссылку на список воспроизведения и получает список музыки c и автора.

Но сайт продолжал отклонять мое соединение, потому что считал меня ботом, поэтому я использовал 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 с пустым пространством, где должен был быть плейлист

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Вы хотите проверить эту ссылку , чтобы получить контент, который вы sh захватите.

Следующая попытка должна привести вас к именам артистов и именам их песен.

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 или более поздней, чтобы скрипт мог поддерживать псевдоселектор.

1 голос
/ 24 апреля 2020

ТОЧКА НА ПОМНИТЕ, КОТОРЫЕ СКРЕПИРУЮТ


1) Используйте хороший пользовательский агент .. ua.random может вернуть вам пользовательский агент, который заблокирован сервер

2) Если вы делаете слишком много очистки, ограничьте скорость очистки, используйте time.sleep (), чтобы сервер не загружался вашим IP-адресом, иначе он заблокирует вас.

3) Если сервер блокируется, попробуйте использовать вращение Ip.

...