Python синтаксис не может распознать азербайджанский алфавит в строке - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь очистить веб-страницы методом создания ссылок, но проблема возникает, когда внутри ссылки есть азербайджанский алфавит. Python разделить ссылку, с которой начинается азербайджанский алфавит.

ПРИМЕР:

ссылка должна быть похожа на => http://marja.az/search?q=ali+əli

, но это печатает это как => http://marja.az/search?q=ali+ *li

КОД:

import requests
from bs4 import BeautifulSoup as bs
import locale


URL = 'http://marja.az/search?q='

# if there is a prabel inside of keyword merge with + sign
KEYWORDS = [
           'Vali+Vəli'
           ]

for key in KEYWORDS:
    search_url = URL + key
    print(search_url)
    r = requests.get(search_url)
    soup = bs(r.content, "lxml")
    for data in soup.find_all("div", {"class": "searchNews"}):
        for a in data.find_all("a"):
            href = a.get("href")
            link = "http://marja.az/" + href
            print(link)
            r1 = requests.get(link)
            soup1 = bs(r1.content, "lxml")
            # HEADER of NEWS
            header = soup1.find("h1", attrs={"class": "title"}).text
            print(header)
            # CONTENT of NEWS
            paragraph = soup1.find("div", attrs={"class": "text"}).findAll('p', text=True, recursive=False)
            for p in paragraph:
                print(p.text)
            # DATE of NEWS PUBLISHED
            date = soup1.find('div', {'style': 'color: #af0000; margin:10px 0px 10px 0px; font-size:12px; ''font'
                                               '-weight:bold; text-align:left;'}).text
            date = date.split(",")[0].split(" ")
            date = date[0] + "-" + date[1] + "-" + date[2]
            print(date)


1 Ответ

1 голос
/ 19 марта 2020

Вывод вашего скрипта на 100% простой текст - после «print» на языке Python ничего не будет конвертировать напечатанный URL в рабочую ссылку.

Это инструмент, который вы используете для просмотра вывода вашей программы, который делает это - независимо от того, запускаете ли вы свою программу в эмуляторе терминала, в IDE или в блокноте Jupyter, - именно эта программа пытается конвертировать строки, начиная с https:// в рабочие ссылки и не работает с этим символом.

Итак, хотя это не имеет ничего общего с поведением Python, есть одна вещь, которую вы можете попробовать: убрать эту часть URL-адреса перед его печатью - возможно, программа-нарушитель распознает весь URL.

Для этого выполните:


from urllib.parse import quote

...
# and later on the code replace this line:
             # link = "http://marja.az/" + href
             # for
             link = "http://marja.az/" + quote(href)

Если это не сработает, вам придется прибегнуть к написанию собственного выходного интерфейса, будь то веб-страницу или окно Tkinter, которое будет правильно использовать вашу ссылку - и, конечно, вы можете сообщить об ошибке в любой программе, которую вы используете для запуска скрипта в - ошибка этой программы в том, что символ другого алфавита не считается частью URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...