Вы можете использовать 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-адрес за то, что вы слишком агрессивно соскабливаете свои веб-страницы.
Edit:
Теперь обратите внимание на следующую страницу URL, вы можете использовать регулярные выражения:
import re
next_page = soup.find('a', text=re.compile(r'.*Next.*'))
print next_page['href']
Так что он делает это, чтобы искать a
тег, который имеет содержание соответствует регулярному выражению '.*Next.*'
.
Спасибо Shane ... это действительно сработало, но что, если url будет какой-то случайной строкой каждый раз. – ricky
@ricky Тогда вы можете проанализировать страницу, чтобы получить новый URL-адрес. – Shane
Простите меня, я не совсем понял. Я говорю, как я разбираю какую-то страницу с URL-адресом https: // webpage/abc, и, скажем, следующей страницей будет https: // webpage/xyz. Как получить этот URL-адрес «xyz», пока я разбираю веб-страницу «abc». Предполагая, что на веб-странице «abc» есть только следующая кнопка ...... Спасибо в Advance – ricky