Actually, there's a simple fix to that:
You have to swap encodings with:
page.encoding = page.apparent_encoding
Here's a working example based on your code:
import requests
from bs4 import BeautifulSoup
import pandas as pd
from time import sleep
from random import randint
partynames = []
for page in range(11, 12):
page = requests.get("https://www.cvk.gov.ua/pls/vnd2019/wp304pt001f01=919pf7331=" + str(page) + ".html",
verify=False)
page.encoding = page.apparent_encoding
soup = BeautifulSoup(page.text, 'html.parser')
ukraine_tr = soup.find_all('tr')
sleep(randint(2, 10))
for container in ukraine_tr:
partyn = container.find('a', class_='a2')
if partyn is not None:
name = partyn.get_text()
else:
name = "N/A"
partynames.append(name)
ukraine = pd.DataFrame({
'pty_n': partynames
})
ukraine.to_csv('ukraine.csv')
Output:
3,"ПОЛІТИЧНА ПАРТІЯ ""СЛУГА НАРОДУ"""
4,"ПОЛІТИЧНА ПАРТІЯ ""УКРАЇНСЬКА СТРАТЕГІЯ ГРОЙСМАНА"""
5,"Політична партія ""Європейська Солідарність"""
6,"політична партія Всеукраїнське об’єднання ""Батьківщина"""
7,"ПОЛІТИЧНА ПАРТІЯ ""СИЛА І ЧЕСТЬ"""
8,"Політична партія ""ОПОЗИЦІЙНА ПЛАТФОРМА – ЗА ЖИТТЯ"""
9,"Політична Партія ""ГОЛОС"""
10,"політична партія Всеукраїнське об’єднання ""Свобода"""
11,"ПОЛІТИЧНА ПАРТІЯ ""ПАРТІЯ ШАРІЯ"""
12,"ПОЛІТИЧНА ПАРТІЯ ""РАДИКАЛЬНА ПАРТІЯ ОЛЕГА ЛЯШКА"""
13,"Політична партія ""ОПОЗИЦІЙНИЙ БЛОК"""
14,"політична партія ""Громадянська позиція"""
15,"Політична партія ""Рух Нових Сил Михайла Саакашвілі"""
16,"ПОЛІТИЧНА ПАРТІЯ ""ПАРТІЯ ЗЕЛЕНИХ УКРАЇНИ"""
17,"Політична партія ""Об’єднання ""САМОПОМІЧ"""
18,Аграрна партія України
19,"Політична партія ""Сила Людей"""
20,"ПОЛІТИЧНА ПАРТІЯ ""СИЛА ПРАВА"""
21,"ПОЛІТИЧНА ПАРТІЯ ""СОЦІАЛЬНА СПРАВЕДЛИВІСТЬ"""
22,"Політична Партія ""ПАТРІОТ"""
23,"ПОЛІТИЧНА ПАРТІЯ ""НЕЗАЛЕЖНІСТЬ"""
24,"ПОЛІТИЧНА ПАРТІЯ ""ВСЕУКРАЇНСЬКЕ ОБ’ЄДНАННЯ ""ФАКЕЛ"""
EDIT:
Getting things translated!
You can use googletrans to get the source text translated to English.
First run this pip install googletrans and then try this:
from time import sleep
from random import randint
import pandas as pd
import requests
from bs4 import BeautifulSoup
from googletrans import Translator
traslator = Translator()
partynames = []
for page in range(11, 12):
page = requests.get("https://www.cvk.gov.ua/pls/vnd2019/wp304pt001f01=919pf7331=" + str(page) + ".html",
verify=False)
page.encoding = page.apparent_encoding
soup = BeautifulSoup(page.text, 'html.parser')
ukraine_tr = soup.find_all('tr')
sleep(randint(2, 10))
for container in ukraine_tr:
partyn = container.find('a', class_='a2')
if partyn is not None:
name = traslator.translate(partyn.get_text()).text
else:
name = "N/A"
partynames.append(name)
ukraine = pd.DataFrame({
'pty_n': partynames
})
ukraine.to_csv('ukraine.csv')
Output:
3,"POLITICAL PARTY ""SERVANT OF THE PEOPLE"""
4,"POLITICAL PARTY ""UKRAINIAN GROISMAN'S STRATEGY"""
5,European Solidarity Political Party
6,Batkivshchyna All-Ukrainian Union Political Party
7,"POLITICAL PARTY ""POWER AND HONOR"""
8,"Political party ""OPPOSITION PLATFORM - FOR LIFE"""
9,VOICE Political Party
10,"political party All-Ukrainian Union ""Freedom"""
11,"POLITICAL PARTY ""PARTY OF SHARIA"""
12,"POLITICAL PARTY ""RADICAL PARTY OF OLEH LYASHKO"""
13,OPPOSITION BLOC political party
14,Civic Position political party
15,Mikheil Saakashvili's New Forces Movement political party
16,"POLITICAL PARTY ""PARTY OF THE GREENS OF UKRAINE"""
17,SAMOPOMICH Association Political Party
18,Agrarian Party of Ukraine
19,People's Power Political Party
20,"POLITICAL PARTY ""POWER OF LAW"""
21,SOCIAL JUSTICE POLITICAL PARTY
22,PATRIOT Political Party
23,INDEPENDENCE POLITICAL PARTY
24,"ALL-UKRAINIAN ASSOCIATION ""TORCH"" POLITICAL PARTY"