Почему включено в ссылку во многих частях ссылок ('a'), которые я пытаюсь очистить с помощью BeautifulSoup в фитоне? Какой лучший способ удалить это? - PullRequest
0 голосов
/ 17 апреля 2019

Я использую findAll('a') или его варианты для извлечения определенного тега или класса, но я получаю 'amp;' между ссылками во многих частях.

Пример: Обе связывают фактическое и ошибочное ('amp;') одно https://help.cybonline.co.uk/system/selfservice.controller?CONFIGURATION=1113&PARTITION_ID=1&secureFlag=true&TIMEZONE_OFFSET=&CMD=VIEW_ARTICLE&ARTICLE_ID=14311&CUST_PREV_CMD=null

https://help.cybonline.co.uk/system/selfservice.controller?CONFIGURATION=111)3&PARTITION_ID=1&secureFlag=true&TIMEZONE_OFFSET=&CMD=VIEW_ARTICLE&ARTICLE_ID=14311&CUST_PREV_CMD=null

"selfservice.controller?CONFIGURATION=1113&PARTITION_ID=1&secureFlag=false&TIMEZONE_OFFSET=&CMD=VIEW_ARTICLE&ARTICLE_ID=14271&CUST_PREV_CMD=BROWSE_TOPIC"

Я могу избавиться от него с помощью регулярных выражений, но есть ли лучший способ сделать это?

У меня проблема с веб-сайтом cybonline

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Я не вижу такой проблемы с lxml. Можете ли вы попробовать запустить следующее?

import requests 
from bs4 import BeautifulSoup as bs
base_url = 'https://help.cybonline.co.uk/system/'
r = requests.get('https://help.cybonline.co.uk/system/selfservice.controller?CONFIGURATION=1113&PARTITION_ID=1&secureFlag=true&TIMEZONE_OFFSET=&CMD=BROWSE_TOPIC&TOPIC_ID=55956')
soup = bs(r.content, 'lxml')

links = [base_url + item['href'] for item in soup.select('.articleAnchor')]
print(links)

Если нет, вы можете использовать заменить

base_url + item['href'].replace('amp;', '')
0 голосов
/ 17 апреля 2019

Если вы хотите удалить это значение &, вы можете просто использовать замену при извлечении значения.

import requests
from bs4 import BeautifulSoup
html=requests.get("https://help.cybonline.co.uk/system/selfservice.controller?CONFIGURATION=1113&PARTITION_ID=1&secureFlag=true&TIMEZONE_OFFSET=&CMD=BROWSE_TOPIC&TOPIC_ID=55956").text
soup=BeautifulSoup(html,'html.parser')

for a in soup.find_all('a' ,class_='articleAnchor'):
    link=a['href'].replace('&' , '')
    print(link)

ИЛИ

import requests
from bs4 import BeautifulSoup
html=requests.get("https://help.cybonline.co.uk/system/selfservice.controller?CONFIGURATION=1113&PARTITION_ID=1&secureFlag=true&TIMEZONE_OFFSET=&CMD=BROWSE_TOPIC&TOPIC_ID=55956").text
soup=BeautifulSoup(html,'html.parser')

for a in soup.select('a.articleAnchor'):
    link=a['href'].replace('&' , '')
    print(link)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...