Невозможно удалить начальный пробел из результата передачи URL с BeautifulSoup - PullRequest
0 голосов
/ 17 декабря 2018

Я имею дело со словарем, который содержит множество HTML-ссылок с неполными URL-адресами, в форме:

<li><b>Random Thing</b>: <a href="dl_img/CM2233.jpg" target=_blank>JPG</a></li>

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

Я использую следующий код:

for datadict in temp:
    temp1 = svc.call(session, 'catalog_product.info', [datadict['product_id']]);
    imagehtml = temp1['dl_image']
    if temp1.get('set') != None:
        if imagehtml != None and imagehtml !='':
            soup = Soup(imagehtml, 'html.parser')
            for a in soup.find_all('a', href=True):
                print("www.example.com/media/", a['href'].lstrip())

, который выводит следующее:

www.example.com/media/ dl_img/CM2233.jpg

Какие еще методы можно использовать для удаления пробелов в начале того, что возвращает BeautifulSoup?

1 Ответ

0 голосов
/ 17 декабря 2018

Пространство, которое вы видите, является просто чем-то, что print() использует в качестве разделителя по умолчанию, когда в него передается несколько аргументов.И вы можете изменить этот разделитель при необходимости:

print("www.example.com/media/", a['href'], sep='')

В общем, вы можете и должны использовать urllib.parse.urljoin() для объединения частей URL:

from urllib.parse import urljoin

base_url = "www.example.com/media/"

for a in soup.find_all('a', href=True):
    print(urljoin(base_url, a['href']))
...