Python Веб-парсинг не получает все HTML - PullRequest
0 голосов
/ 12 июля 2020

Я новичок в парсинге веб-страниц в Python и использую BeautifulSoup для анализа. Когда у меня есть данные HTML, я пытаюсь получить доступ к чему-то в разделе «

.
», но я не получаю все HTML, которые будут отображаться, если я нажму «Осмотреть» на актуальном сайте. Как я могу получить доступ в соответствии с этим, или это способ, которым веб-сайт блокирует мне доступ к информации на веб-странице?

Если это не имеет смысла, я говорю, что есть "." в этом div вместо дополнительных подкатегорий, которые я могу увидеть (которые я вижу, когда нажимаю кнопку «Проверить» на веб-странице ».

Это мой красивый код супа ...

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

myurl = 'https://www.coolbet.com/en/sports/incoming-bets'

#open connecting and grab content
uClient = uReq(myurl)
page_html = uClient.read()
uClient.close()

#html parsing
page_soup = soup(page_html, "html.parser")

#grabs each product
containers = page_soup.div.findAll("div", {"class":"sc-iuJeZd iJcGXh"})

print(containers)

Он выводит [] потому что page_soup.div выводит только "

.
"

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

После перехода к https://www.coolbet.com/en/sports/incoming-bets кажется, что нет <div> с classname, которое вы указали в вопросе. Если я прав, вы должны пройти аутентификацию, чтобы получить желаемые результаты (я не уверен на 100%). Для входа через python (сначала получите файлы cookie сеанса):

import requests

url = "https://www.coolbet.com/en/login"
payload = {'username': 'abcdef', 'password': '123456'}
with requests.session() as s:
# fetch the login page
# post to the login form
r1 = s.get(url)
r2 = s.post(url, data=payload, cookies=r1.cookies)

Переменная r2 содержит ответ (из фрагмента кода выше). Теперь очистите страницу. Ни один веб-сайт не позволяет вам очищать их веб-сайты как часть файла robots.txt. Но некоторые из них можно очистить, указав допустимый заголовок User-Agent. Также убедитесь, что очистка разрешена веб-сайтом, с которого вы выполняете очистку.

0 голосов
/ 12 июля 2020

Похоже, это содержимое Dynami c, поэтому ответ, который вы получаете с urlopen, не имеет того, что вы видите с помощью inspect в своем браузере, поэтому я бы рекомендовал использовать selenium webdriver для получения этого содержимого ..

...