Получите странные буквы от арабского алфавита, когда вычищаете арабский сайт - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы почистить этот сайт: http://waqfeya.com/book.php?bid=1

, но когда я получаю, я получаю символы, подобные этим.

Вот так выглядит мой сценарий:

import requests
from bs4 import BeautifulSoup
BASE_URL = "http://waqfeya.com/book.php?bid=1" 
source = requests.get(BASE_URL)
soup = BeautifulSoup(source.text, 'lxml') 
print(soup)

Я пробовал эти вещи, но у меня не работает:

source.encoding = 'utf-8'

и это:

source.encoding = 'ISO-8859-1'

также это:

soup = BeautifulSoup(source.text, from_endocing='ISO-8859-1')

Но никто не работал на меня.

Любая помощь, пожалуйста,

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

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Иногда запросы могут неправильно указывать кодировку.Для этого сайта мы можем получить правильную кодировку из источника.

enter image description here

Вы можете назначить кодировку как source.encoding='windows-1256' перед использованием source.text в BeautifulSoup.

import requests
BASE_URL = "http://waqfeya.com/book.php?bid=1"
source = requests.get(BASE_URL)
print(source.encoding)
print(source.apparent_encoding)
source.encoding='windows-1256'
print(source.text)

Мне удалось правильно получить все арабские символы.

0 голосов
/ 12 февраля 2019

Используйте urlopen вместо request

from bs4 import BeautifulSoup
from urllib import urlopen

BASE_URL = "http://waqfeya.com/book.php?bid=1"
open = urlopen(BASE_URL)
soup = BeautifulSoup(open, 'lxml')
print(soup.encode('utf-8'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...