2017-02-02 4 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-адрес за то, что вы слишком агрессивно соскабливаете свои веб-страницы.

Edit:

Теперь обратите внимание на следующую страницу URL, вы можете использовать регулярные выражения:

import re 

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

Так что он делает это, чтобы искать a тег, который имеет содержание соответствует регулярному выражению '.*Next.*'.

+0

Спасибо Shane ... это действительно сработало, но что, если url будет какой-то случайной строкой каждый раз. – ricky

+0

@ricky Тогда вы можете проанализировать страницу, чтобы получить новый URL-адрес. – Shane

+0

Простите меня, я не совсем понял. Я говорю, как я разбираю какую-то страницу с URL-адресом https: // webpage/abc, и, скажем, следующей страницей будет https: // webpage/xyz. Как получить этот URL-адрес «xyz», пока я разбираю веб-страницу «abc». Предполагая, что на веб-странице «abc» есть только следующая кнопка ...... Спасибо в Advance – ricky

 Смежные вопросы

  • Нет связанных вопросов^_^