2017-02-25 21 views
0

IMGを抽出するために内部をナビゲートしようとしましたが動作しません。誰かが助けることができるなら、大きな助けになるでしょう。Pythonのxmlから "img"リンクを抽出できません

from bs4 import BeautifulSoup 
import urllib 
import reimport lxml 

my_feeds = ['http://theverge.com/rss/index.xml'] 

for my_feed in my_feeds: 
    url=urllib.request.urlopen(my_feed) 
    soup=BeautifulSoup(url,"lxml") 
    entries=soup.find_all(['item','entry']) 

    for entry in entries: 
     print(entry.title.get_text()) 
     img=entry.find("img") 
     print(img) 
+0

どこにある画像を抽出しようとするコード?どのようなスタックトレースを取得しますか?あなたが提供したコードはうまく実行されるので、私はあなたに何を助けるべきか分からない。 – Neelik

+0

は最後の2行を更新しました。コードの最後の部分が削除されてしまったので削除しました。助けてくれてありがとう – Shakthi

答えて

1

テキスト文字列でタグを検索しようとしています。 regexであなたの画像を見つけることをお勧めします。

あなたがこれを使用することができます:

from bs4 import BeautifulSoup 
import urllib.request 
import lxml 
import re 

my_feeds = ['http://theverge.com/rss/index.xml'] 

for my_feed in my_feeds: 
    url = urllib.request.urlopen(my_feed) 
    soup = BeautifulSoup(url, "lxml") 
    entries = soup.find_all(['item','entry']) 

    for entry in entries: 
     img = entry.find("content") 
     image = re.search(r'(?<=src=")(.*?)(?=")', img.get_text()) 
     print (image.group(0)) 

これを返します。コードの印刷:

https://cdn0.vox-cdn.com/thumbor/0Wln5lVNkZOj2RFrl9MXRz9rkOE=/0x0:2996x1997/1310x873/cdn0.vox-cdn.com/uploads/chorus_image/image/53417309/643062258.0.jpg https://cdn0.vox-cdn.com/thumbor/700q2QbDYoy9DW00Ud65RmEFfwM=/3x0:2283x1520/1310x873/cdn0.vox-cdn.com/uploads/chorus_image/image/53415747/seiko_steve_jobs_4.0.jpg ...

+0

ありがとう@Zrog。これは、この特定のフィードに役立ちますが、私がフィード( "https://www.wired.com/category/gear/feed/")を変更し、 "content"を "description"に置き換えた場合、エラー "print(image.group (0)) AttributeError: 'NoneType'オブジェクトに 'group'属性がありません。なにか提案を? – Shakthi

+0

あなたはCDATAアイテムを持っています。その場合は直接取得できます。例 'img = entry.find(" description ")print(img.find_all(" img "))' – Zroq

+0

ありがとう@Zorg。私はtryとexceptを使用してimg urlデータを取得しました。これをコード化する良い方法はありますか? – Shakthi

関連する問題