刮擦阿拉伯语网站时,从阿拉伯语字母中获取奇怪的字母

时间:2019-02-12 15:57:16

标签: python web-scraping beautifulsoup

我要抓取这个网站: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 :(得分:0)

使用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'))

答案 1 :(得分:0)

有时,请求可能会得到错误的编码。对于此站点,我们可以从源中获取正确的编码。

enter image description here

您可以在BeautifulSoup中使用source.encoding='windows-1256'之前指定类似source.text的编码。

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)

我能够正确获取所有阿拉伯字符。