2011-08-26 50 views
7

Tôi đang sử dụng súp đẹp và tôi đang viết một trình thu thập và có mã sau đây trong nó:thay thế ký tự không làm việc trong python

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 

Các link['href'].replace('..', '') là nghĩa vụ phải sửa chữa các liên kết xuất hiện lúc ../contact /orderform.aspx, ../contact/requestconsult.aspx, v.v. Tuy nhiên, nó không hoạt động. Liên kết vẫn có hàng đầu ".." Có điều gì đó tôi bị thiếu không?

Trả lời

31

string.replace() trả về chuỗi có các giá trị được thay thế. Nó không sửa đổi bản gốc để làm điều gì đó như thế này:

link['href'] = link['href'].replace("..", "") 
2

Nó không phải là một thay thế tại chỗ. Bạn cần phải làm:

link['href'] = link['href'].replace('..', '') 

Ví dụ:

a = "abc.." 
print a.replace("..","") 
'abc' 
print a 
'abc..' 
a = a.replace("..","") 
print a 
'abc' 
8

string.replace() trả về một bản sao của chuỗi với các nhân vật thay thế, như chuỗi bằng Python là không thay đổi. Hãy thử

s = link['href'].replace("..", '') 
url=urljoin(page, s) 
Các vấn đề liên quan