我正在使用漂亮的汤,我正在编写一个爬虫,并在其中包含以下代码:
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
Run Code Online (Sandbox Code Playgroud)
本link['href'].replace('..', '')
应该修复出来的../contact/orderform.aspx,../contact/requestconsult.aspx,等等.但是,它不工作的链接.链接仍然是领先的".."有什么我想念的吗?
joe*_*ick 46
string.replace()返回包含替换值的字符串.它不会修改原件,所以做这样的事情:
link['href'] = link['href'].replace("..", "")
Run Code Online (Sandbox Code Playgroud)
jan*_*gan 12
string.replace()
返回字符串的副本,替换字符,因为Python中的字符串是不可变的.尝试
s = link['href'].replace("..", '')
url=urljoin(page, s)
Run Code Online (Sandbox Code Playgroud)
它不是就地替换。您需要做:
link['href'] = link['href'].replace('..', '')
Run Code Online (Sandbox Code Playgroud)
例:
a = "abc.."
print a.replace("..","")
'abc'
print a
'abc..'
a = a.replace("..","")
print a
'abc'
Run Code Online (Sandbox Code Playgroud)