@black_dis

Как спарсить динамический сайт?

https://forum.malinovka.org/topic/13323-список-дей...
С данного сайта нужно спарсить лидеров и информацию по ним.
При обычном req запросе, получаю "Please turn JavaScript on and reload the page." и не могу вытащить нужную информацию.

Код будет использоваться не мной.

import requests
from bs4 import BeautifulSoup

headers = {"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"}
res = requests.get("https://forum.malinovka.org/topic/13323-список-действующих-лидеров/", headers = headers)
soup = BeautifulSoup(res.content, "html.parser")

all_liders = soup.findall("div", class_ = "ipsType_normal ipsType_richText ipsContained")
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Берете Selenium - и вперед...
Ответ написан
jerwright
@jerwright
while True: coding()
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
from selenium import webdriver
import time

URL = 'https://forum.malinovka.org/topic/13323-список-действующих-лидеров/'

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path="chromedriver.exe", options=options)
driver.get(url=URL)
time.sleep(2)
useragent = UserAgent()
needed_html_code = driver.page_source
driver.close()
driver.quit()

soup = BeautifulSoup(needed_html_code, "html.parser")

content_div = soup.find('div', class_='cPost_contentWrap ipsPad')
for p in content_div.find_all('p')[1:]:
	for item in p.contents:
		print(str(item.string).replace('None', ''), end='\n')
	print("-"*15)


Вам нужно установить webdriver (в моём случае chrome) для работы кода. Если будете ставить код на heroku, к примеру, то там можно дополнительно его установить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы