Ответ 1
string.replace() возвращает строку с замененными значениями. Он не модифицирует оригинал, поэтому сделайте следующее:
link['href'] = link['href'].replace("..", "")
Я использую красивый суп, и я пишу обложку и имею в нем следующий код:
print soup.originalEncoding
#self.addtoindex(page, soup)
links=soup('a')
for link in links:
if('href' in dict(link.attrs)):
link['href'].replace('..', '')
url=urljoin(page, link['href'])
if url.find("'") != -1:
continue
url = url.split('?')[0]
url = url.split('#')[0]
if url[0:4] == 'http':
newpages.add(url)
pages = newpages
Предполагается, что link['href'].replace('..', '')
фиксирует ссылки, которые выходят как.. /contact/orderform.aspx,../contact/requestconsult.aspx и т.д. Однако он не работает. Ссылки по-прежнему имеют ведущие ".." Есть ли что-то, чего я не вижу?
string.replace() возвращает строку с замененными значениями. Он не модифицирует оригинал, поэтому сделайте следующее:
link['href'] = link['href'].replace("..", "")
string.replace()
возвращает копию строки с замененными символами, поскольку строки в Python являются неизменяемыми. Попробуйте
s = link['href'].replace("..", '')
url=urljoin(page, s)
Это не замена на месте. Вам нужно сделать:
link['href'] = link['href'].replace('..', '')
Пример:
a = "abc.."
print a.replace("..","")
'abc'
print a
'abc..'
a = a.replace("..","")
print a
'abc'