Python парсинг через selenium, bs4
Появилась проблема с парсингом контента на этом сайте и в последующем добавление в список, к примеру ,при парсинге в 'NAME':item.find('td', class_='gamename').get_text(strip=True) он может захватить вот этот тег: 
Но мне нужно только название в class_='gamename'
И еще одна проблема с парсингом 'PLAYERS':item.find('div', class_='ui horizontal list').get_text() В нем нужно спарсить ники игроков, но он их в одну строку сливает без пробелов и запятых вот так: Post_147siuueya0N1Kto2tereshchuk_yuriNayton, но нужно чтобы было раздельно (Post_147,siuueya, 0N1Kto2 и т.д.). Уже пробовал спарсить отдельно class='item' в теге 'a' примерно вот так:
'PLAYERS':item.find('a', class_='item').get_text()
'PLAYERS':item.find('div', class_='ui horizontal list')find('a').get_text()
Вот фрагмент кода:
for item in items:
try:
self.game_list.append({
'NAME':item.find('td', class_='gamename').get_text(strip=True),
'PLAYERS':item.find('div', class_='ui horizontal list').get_text()
})
except:
break
file.close()
Вот весь код:
import time
import re
from bs4 import BeautifulSoup
from selenium import webdriver
class Person:
def get_data(self):
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
# headless mode
# options.add_argument("--headless")
#options.headless = True
try:
driver = webdriver.Chrome(options=options)
driver.get('https://irinabot.ru')
time.sleep(1)
with open("parse.html", "w", encoding='utf-8') as file: #Сохранение контента сайта
file.write(driver.page_source)
file.close()
self.num = driver.find_element_by_xpath('//*[@id="botstat"]/tr[1]/td[2]').text #Сохранение числа не начатых игр
except Exception as ex:
print(ex)
finally:
driver.close()
driver.quit()
def get_parse(self):
#Открытие контента сайта
with open('parse.html', 'r', encoding='utf-8') as file:
f = file.read()
soup = BeautifulSoup(f, "lxml")
#Выделение каши
items = soup.find_all("tr", class_="gamebackgroud", limit=20)#int(self.num)) #Число не начатых игр которые нужно запарсить
self.game_list = []
#Добавление в список список игр
for item in items:
try:
self.game_list.append({
'NAME':item.find('td', class_='gamename').get_text(strip=True),
'PLAYERS':item.find('div', class_='ui horizontal list').get_text()
})
except:
break
file.close()
print('.......Список игр.......\n',self.game_list, '\n........................')
def search(self):
#Поисковик игр
flag = True
for s in self.game_list:
if re.search('zeml', str(s)):
print('Игры под названием', s['NAME'])
flag = False
elif re.search('ZEML', str(s)):
print('Игры под названием', s['NAME'])
flag = False
elif re.search('zemli', str(s)):
print('Игры под названием', s['NAME'])
flag = False
elif re.search('Zemli', str(s)):
print('Игры под названием', s['NAME'])
flag = False
elif re.search('земли', str(s)):
print('Игры под названием', s['NAME'])
flag = False
elif re.search('ZeM', str(s)):
print('Игры под названием', s['NAME'])
flag = False
if flag:
print('Игра не найдена')
p = Person()
p.get_data()
p.get_parse()
p.search()
Ответы (1 шт):
Решил проблему с разделением тегов запятой в списке PLAYERS следующим образом:
'PLAYERS':item.find('div', class_='ui horizontal list').get_text(',')
