我正在使用漂亮的汤,我正在编写一个爬虫,并在其中包含以下代码:
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等形式出现的链接。但是,它无效。链接仍然是领先的“..”我有什么遗漏?
答案 0 :(得分:44)
string.replace()返回包含替换值的字符串。它不会修改原件,所以做这样的事情:
link['href'] = link['href'].replace("..", "")
答案 1 :(得分:12)
string.replace()
返回字符串的副本,替换字符,因为Python中的字符串是不可变的。尝试
s = link['href'].replace("..", '')
url=urljoin(page, s)
答案 2 :(得分:6)
这不是一个现场替代品。你需要这样做:
link['href'] = link['href'].replace('..', '')
示例:
a = "abc.."
print a.replace("..","")
'abc'
print a
'abc..'
a = a.replace("..","")
print a
'abc'