2017-07-25 10 views
1

私は、torrentサイトの詳細を取得するためにPythonでいくつかのコードを書いています。しかし、コードを実行すると、期待通りの結果が得られました。このクローラの唯一の問題は、修正できない最初のページの内容をスキップすることです(ページングURLが2から始まるように)。これに関するどんな助けも非常に感知できるでしょう。スタートページからクローラの解析データを作成する方法

import requests 
from lxml import html 

page_link = "https://yts.ag/browse-movies" 
b_link = "https://yts.ag" 

def get_links(main_link): 
    response = requests.get(main_link).text 
    tree = html.fromstring(response) 
    for item in tree.cssselect('ul.tsc_pagination a'): 
     if "page" in item.attrib["href"]: 
      movie_details(b_link + item.attrib["href"]) 

def movie_details(link): 
    response = requests.get(link).text 
    tree = html.fromstring(response) 
    for titles in tree.cssselect("div.browse-movie-wrap"): 
     title = titles.cssselect('div.browse-movie-bottom a.browse-movie-title')[0].text 
     link = titles.cssselect('div.browse-movie-year')[0].text 
     rating= titles.cssselect('figcaption.hidden-xs h4.rating')[0].text 
     genre = titles.cssselect('figcaption.hidden-xs h4')[0].text 
     genre1 = titles.cssselect('figcaption.hidden-xs h4')[1].text 
     print(title, link, rating, genre, genre1) 

get_links(page_link) 

答えて

1

ループの前にmain_linkのmovie_details()関数を呼び出すだけではどうですか?

def get_links(main_link): 
    response = requests.get(main_link).text 
    tree = html.fromstring(response) 
    movie_details(main_link) 
    for item in tree.cssselect('ul.tsc_pagination a'): 
     if "page" in item.attrib["href"]: 
      movie_details(b_link + item.attrib["href"]) 
+0

ありがとうPRMoureu、あなたの答えです。あなたのソリューションは常に機能します。私は最近、多くのWebサイトでこの手法を使用していることに気付きました。ページネーションURLに最初のページを含めるのではなく、だから、もっと良いアイデアはありませんか? – SIM

+0

@ SMth80スタートページに「ページ1」の代わりに項目が表示される最も簡単な方法のようですが、クエリで収集された最初のページ番号を確認するためのテストを追加することもできます。 2 – PRMoureu

+0

から始めました。私は最初にそれをテストしたので、私はあなたのコードが常に動作すると答えました。あなたが見てみるべきであるもう1つのこと - 私がぺージされたURLを擦ったとき、私はいくつかの重複したURLがあることが分かった。その回避策はありますか?あなたの余暇の中でそれについて考えるかもしれません。 PRMoureuに感謝します。 – SIM

関連する問題