Очистка таблицы для ссылок, получение данных по каждой ссылке и выполнение того же для многих страниц (разбиение на страницы) - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть список 5000 лучших фильмов, охватывающих 50 страницы. Веб-сайт

http://5000best.com/movies/

Я хочу извлечь названия из 5000 фильмов, а затем нажать на ссылку с названием каждого фильма. Каждая ссылка будет перенаправлять меня на страницу IMDb. Затем я хочу извлечь имя director's. Это даст мне таблицу с 5000 строками, столбцами будут название фильма и режиссер. Эти данные будут экспортированы в CSV или XLSX.

У меня есть следующие для извлечения текста:

import requests
start_url = 'http://5000best.com/movies/'
r = requests.get(url)
soup = bs4.BeautifulSoup(r.text)

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Хорошо, вот основная логика разбиения на страницы. Надеюсь, у тебя все получится. Для захвата всех страниц просто зацикливайтесь, пока следующая страница не существует.

import requests
import bs4

i = 1
while 1:
    url = f'http://5000best.com/movies/{i}'
    r = requests.get(url)
    soup = bs4.BeautifulSoup(r.text)

    # looking at the HTML we can find the main table
    table = soup.find('table', id="ttable")

    # analyse the HTML and process the table here

    # if the table is empty, we are beyond the last page
    if len(table.find_all('tr')) == 0:
        break
    i += 1
1 голос
/ 02 ноября 2019

Я думаю, что проблема заключается в получении ссылки на нумерацию страниц. Так работает ссылка

http://5000best.com/?m.c&xml=1&ta=13&p=1&s=&sortby=0&y0=&y1=&ise=&h=01000000000000000

Есть 2 параметра, которые меняются на каждой странице: p и h (хотя ссылки кажутсяработает независимо от параметра h)

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

http://5000best.com/?m.c&xml=1&ta=13&p=2&s=&sortby=0&y0=&y1=&ise=&h=02000000000000000

и 50 будет выглядеть так:

http://5000best.com/?m.c&xml=1&ta=13&p=50&s=&sortby=0&y0=&y1=&ise=&h=05000000000000000

Надеюсь, вы сможетесправиться с остальным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...