python beautifulsoup нет данных между тегами div - PullRequest
0 голосов
/ 04 декабря 2018

Я пытался получить данные с помощью Beautifulsoup на этом веб-сайте "http://www.jps.go.cr/", однако, когда я получаю данные, вся информация между тегами отсутствует. Я могу подтвердить, что данные там проверяют веб-сайт, однако один разЯ запускаю код, который не отображается.

вот код: ------------

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup
url="http://www.jps.go.cr/productos/loteria-nacional"
req = Request(url,headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
soup=BeautifulSoup(c,"html.parser")
all=soup.find_all("div",{"class":"detail_ultimoSorteo loteria"})
print(all)

Буду признателен за любую помощь, так как я за рулемсумасшедшие, другие сайты работают.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Это будет работать в вашем случае, просто отправив вам сообщение (я знаю, что PhantomJS устарел, вы можете использовать драйверы Chrome).

from bs4 import BeautifulSoup
from selenium import webdriver

url="http://www.jps.go.cr/productos/loteria-nacional"

browser = webdriver.PhantomJS()
browser.get(url)
html = browser.page_source

soup = BeautifulSoup(html, 'html.parser')

all=soup.find_all("div",{"class":"detail_ultimoSorteo"})
print(all)

out put

enter image description here

0 голосов
/ 04 декабря 2018

Вы можете получить необходимый контент немного другим способом.Существует библиотека pyppeteer , которая может очень эффективно обрабатывать динамический контент.Проверьте следующую реализацию:

import asyncio
from pyppeteer import launch

async def fetch_items():
    wb = await launch()
    page = await wb.newPage()
    await page.goto("http://www.jps.go.cr/")

    container = await page.querySelector('.detail_ultimoSorteo')
    items = await page.evaluate('(element) => element.innerText', container)
    print(items.strip())

asyncio.get_event_loop().run_until_complete(fetch_items())

Результат:

Sorteo 4520
Domingo, 2 de Diciembre 2018
Primer premio

61 366 ₡ 120.000.000
Segundo premio

60 879 ₡ 18.000.000
Tercer premio

92 401 ₡ 8.000.000
0 голосов
/ 04 декабря 2018

Страница загружается медленно и нуждается в методе, таком как селен, который позволяет достаточно времени, чтобы ваш контент стал доступным.

from selenium import webdriver
url = 'http://www.jps.go.cr/'
driver = webdriver.Chrome()
driver.get(url)
print(driver.find_element_by_css_selector('.detail_ultimoSorteo.loteria').text)

Вывод:

image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...