あなたは、すべてのページ反復する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.*'
。
ありがとうシェーン...本当にうまくいっていますが、URLが毎回ランダムな文字列になる場合はどうなりますか? – ricky
@rickyその後、新しいURLを取得するためにページを解析したいかもしれません – Shane
私を許して、私はそれをあまり得ていませんでした。私は、https:// webpage/abcというURLのページを解析していて、次のページがhttps:// webpage/xyzと言うとします。私は 'abc'ウェブページを解析している間、この 'xyz' URLをどのように取得するのですか? 「abc」ウェブページに次のボタンしかないと推測しています......ありがとうございました – ricky