2017-01-09 7 views
0

私はスクラップするのが初めてで、正しい方向にいくつかのヘルプやプッシュを愛するでしょう。私は現在、scrapyを使ってみましたが、まったく動作しませんでした。 私がしようとしているのは、このpageからタイトル、エピソード、およびHTML5ビデオプレーヤーのリンクの+異なる品質(480p、720pなど)を取得することです。私はどのように私はiframeの要素からビデオのsrcを取得するつもりだか分からない。Python Web Scraperに問題がある

前述のように、どんなヘルプも非常に役に立ちます。

ありがとうございました。

答えて

0

私はScrapyの経験はまだありませんが、私はPython Web Scrapingプロジェクトの途中です。私はスクラップにBeautifulSoupを使用しています。

私はコードの一部を書いています。これはタイトル、エピソード、サムネイルをすべて取得し、後で処理するために新しいページへのリンクを読み込みます。もっと問題がある場合は、メッセージを残してください)

from bs4 import BeautifulSoup 
from urllib import request 

url = "http://getanime.to/recent" 
h = {'User-Agent': 'Mozilla/5.0'} 
req = request.Request(url, headers=h) 
data = request.urlopen(req) 
soup = BeautifulSoup(data) 
# print(soup.prettify()[:1000]) # For testing purposes - should print out the first 1000 characters of the HTML document 

links = soup.find_all('a', class_="episode-release") 
for link in links: 
    # Get required info from this link 
    thumbnail = link.find('div', class_="thumbnail")["style"] 
    thumbnail = thumbnail[22:len(thumbnail)-3] 
    title = link.find('div', class_="title-text").contents[0].strip() 
    episode = link.find('div', class_="super-block").span.contents[0] 
    href = link["href"] 
    # print(thumbnail, title, episode, href) # For testing purposes 

    # Load the link to this episode for further processing 
    req2 = request.Request(href, headers=h) 
    data2 = request.urlopen(req2) 
    soup2 = BeautifulSoup(data2) 

    vid_sources = soup2.find('ul', class_="dropdown-menu dropdown-menu--top video-sources") 
    # TODO repeat the above process to find all video sources 

編集:上記のコードはpython3用です。明確にするために。

+0

こんにちは@Nietvoordekat、クイック依存と上記のコードをありがとう。しかし何らかの理由で私のために働いていないようですね? ありがとう - チーズ – Cheese

+0

[Beautifulsoupがインストールされていること](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)を確認してください。また、私は、 'from urllib import request'の部分はpython3を使っているときだけ動作すると信じています。どのバージョンのPythonを使用していますか?あなたはどんなエラーを出していますか? – Nietvoordekat

+0

現在、明確なエラーはなく、実行すると何も表示されません。以前は2.7を使用していたのでリクエストが正しくインポートされていない問題がありましたが、今は3.6を使用しています。 – Cheese

0

(コメントは改行を削除するので、別の答えとして投稿):助けて幸せ

確かに、;)あなたは正しい軌道に乗って非常に多くしているので、それに保ちます。なぜ私は複数のiframeの例を見つけることができなかったので、あなたはfind_all('iframe')を使用しているのだろうと思っていますが、うまくいくと思います。唯一のことがわかっている場合は、soup.find()を使用する時間を節約できます。

type(iframexx)を使用すると、実際のデータが含まれているリストが表示されます。その後

for iframe in iframexx: 
    print(type(iframexx)) 
    ifr = iframexx[0] 
    print(ifr) 
    print(ifr["data-src"]) 

私はdata-srcを取得することができます。

+0

本当の伝説は、ありがとうございます。 – Cheese

+0

喜んで支援する;) – Nietvoordekat