2017-02-02 24 views
1

次のページのURLを取得できません。トレースバックエラーが発生します。 "?ページ= 2 /ブラウズ・映画を" 基本的に私はつかむしたいページネーションから次のページURLを取得する方法。

from bs4 import BeautifulSoup 
import requests 
import re 
url = "https://yts.ag/browse-movies?page=1" 
headers = {'User-Agent': 'Mozilla/5.0'} 
response = requests.get(url, headers=headers) 
soup = BeautifulSoup(response.text, "html.parser") 
items = soup.find_all('ul', 'tsc_pagination')[0] 
for item in items: 
    print item 

答えて

1
urls = ["https://yts.ag/browse-movies?page={}".format(i) for i in range(1, 10)] # make a url list and iterate over it 
for url in urls: 
    headers = {'User-Agent': 'Mozilla/5.0'} 
    response = requests.get(url, headers=headers) 
    # your code here 
     print year, rating, genre, title 

URLリストを作成し、それを繰り返します。範囲を変更することができます。

1

あなたは、すべてのページ反復するrange(1, 300)を使用することができます。

from bs4 import BeautifulSoup 
import requests 

headers = {'User-Agent': 'Mozilla/5.0'} 

for i in range(1, 300): 
    url = "https://yts.ag/browse-movies?page=%s" % i 

    response = requests.get(url, headers=headers) 
    soup = BeautifulSoup(response.text, "html.parser") 
    items = soup.find_all('div', 'browse-movie-wrap') 
    for item in items: 
     for val in item.find_all('div','browse-movie-bottom'): 
      title = item.find_all('a','browse-movie-title')[0].text 
      year = item.find_all('div','browse-movie-year')[0].text 
     for val in item.find_all('a','browse-movie-link'): 
      try: 
       rating = val.find_all('h4')[0].text 
       genre = val.find_all('h4')[1].text 
      except: 
       pass 

     print year, rating, genre, title 

P.S.をtime.sleep(1)を追加して、あなたのIPをブロックしすぎて自分のWebページを削ってしまった場合に備えて、少し遅くすることもできます。

編集:

は今、あなたは正規表現を使用することができ、次のページのURLを探します。

import re 

next_page = soup.find('a', text=re.compile(r'.*Next.*')) 
print next_page['href'] 

だから何それがないことは、コンテンツが正規表現にマッチしていaタグを探すことです'.*Next.*'

+0

ありがとうシェーン...本当にうまくいっていますが、URLが毎回ランダムな文字列になる場合はどうなりますか? – ricky

+0

@rickyその後、新しいURLを取得するためにページを解析したいかもしれません – Shane

+0

私を許して、私はそれをあまり得ていませんでした。私は、https:// webpage/abcというURLのページを解析していて、次のページがhttps:// webpage/xyzと言うとします。私は 'abc'ウェブページを解析している間、この 'xyz' URLをどのように取得するのですか? 「abc」ウェブページに次のボタンしかないと推測しています......ありがとうございました – ricky

関連する問題