2016-09-02 16 views
2

サイトからHTMLコンテンツを解析しようとしています.hrefとimg srcを変更しています。 hrefは変更に成功しましたが、img srcは成功しませんでした。Python BeautifulSoup img srcを置き換えます

それは変数ではなく、HTML(POST_CONTENT)に変更されました:

<p><img alt="alt text" src="https://lifehacker.ru/wp-content/uploads/2016/08/15120903sa_d2__1471520915-630x523.jpg" title="Title"/></p> 

ない_HTTP://site.ru ...

<p><img alt="alt text" src="http://site.ru/wp-content/uploads/2016/08/15120903sa_d2__1471520915-630x523.jpg" title="Title"/></p> 

は私のコード

if "app-store" not in url: 
     r = requests.get("https://lifehacker.ru/2016/08/23/kak-vybrat-trimmer/") 
     soup = BeautifulSoup(r.content) 

     post_content = soup.find("div", {"class", "post-content"}) 
     for tag in post_content(): 
      for attribute in ["class", "id", "style", "height", "width", "sizes"]: 
       del tag[attribute] 

     for a in post_content.find_all('a'): 
      a['href'] = a['href'].replace("https://lifehacker.ru", "http://site.ru") 

     for img in post_content.find_all('img'): 
      img_urls = img['src'] 
      if "https:" not in img_urls: 
       img_urls="http:{}".format(img_urls) 
      thumb_url = img_urls.split('/') 
      urllib.urlretrieve(img_urls, "/Users/kr/PycharmProjects/education_py/{}/{}".format(folder_name, thumb_url[-1])) 

      file_url = "/Users/kr/PycharmProjects/education_py/{}/{}".format(folder_name, thumb_url[-1]) 
      data = { 
       'name': '{}'.format(thumb_url[-1]), 
       'type': 'image/jpeg', 
      } 

      with open(file_url, 'rb') as img: 
       data['bits'] = xmlrpc_client.Binary(img.read()) 


      response = client.call(media.UploadFile(data)) 

      attachment_url = response['url'] 


      img_urls = img_urls.replace(img_urls, attachment_url) 



     [s.extract() for s in post_content('script')] 
     post_content_insert = bleach.clean(post_content) 
     post_content_insert = post_content_insert.replace('&lt;', '<') 
     post_content_insert = post_content_insert.replace('&gt;', '>') 

     print post_content_insert 

答えて

1

img['src']img_urlsを割り当てていないようです。ブロックの最後でそれを試してみてください。

img_urls = img_urls.replace(img_urls, attachment_url) 
img['src'] = img_urls 

...しかし、最初に、あなたはそれがあなたのファイルオブジェクトのためimg以外のいくつかの名前を使用していますので、あなたのwithステートメントを変更する必要があります。今、あなたはdom要素を覆しており、もはやそれにアクセスすることはできません。

 with open(file_url, 'rb') as some_file: 
      data['bits'] = xmlrpc_client.Binary(some_file.read()) 
+0

はすでに試みたが - IMG [ 'SRC'] = img_urls はTypeError: 'ファイル' オブジェクトは、アイテムの割り当て –

+0

ああ、それは名前の衝突の問題ですがサポートされていません。編集されました。 – Kevin

+0

働く - 完璧な、おかげでたくさんの、そしてnoobの質問には申し訳ありません。 –

関連する問題