Рубрики
Без рубрики

python Web Scrapping (requests_html not beautiful-soup)

Используя request-html в Python, мы делаем утилизацию данных сайта с листингом фильмов

Автор оригинала: Abednego Kilonzo Wambua.

Почему слом В своем стремлении быть ученым данных (будучи водителем) я узнал , что наличие данных-это топливо, которое удерживает автомобиль (наука о данных) на шоссе. Точно так же, как сырую нефть нужно добывать. Иногда вам не предоставляют подручных данных, но разве это мешает нам заставить наши автомобили работать, если ответ отрицательный?(вы получаете пятерку). Вы должны искать способы получить то, что вам нужно (можно ли назвать это базовым рассуждением), и моя помощь пригодилась . Спасибо веб-слом .(мне было очень приятно работать с вами)

Соскабливание паутины!!?? Интересно, кто это … да. Не волнуйся у меня тоже было такое же лицо….На самом деле, как слово лом означает … это удалить что-то с поверхности (спасибо, что частично согласились, но это не урок языка). Когда вы добавляете слово web, то оно меняет значение по умолчанию;- автоматизированные процессы копирования конкретных данных web,как правило , в центральную локальную базу данных или электронную таблицу csv, для последующего извлечения или анализа

Предпосылки:- Точно так же, как в мои студенческие дни преподаватели повторяли это слово. чтобы четко понять (а сдать на самом деле они означали не получить дополнительный) , вы должны были понимать понятия, преподаваемые в CSC 325 , вам нужен навык единиц CSC 215, CSC 115 и CSC 311. Позвольте мне позаимствовать это у них, чтобы сориентироваться в этой истории, вам нужно базовое понимание: 1.html, css (psst это не языки программирования)

Скриншот с 2020-04-19 14-52-04.png

2.python (функции в основном)

3.Знание использования pandas (data crunching library)

Инструменты как сантехник нужен ээээ…. ладно, я имел в виду, что флористу нужен эээ ( джембе )… я имею в виду предметы, которые помогут вам выполнить ваши задачи. Нам также нужно:- 1. IDE (очевидно, убедитесь, что вы настроили свою среду python) 2. request (python3-m pip install requests)- это поможет нам сделать запрос на онлайн-сайт и получить данные, если ссылки существуют 3. requests-html (python3-m pip install requests – html): – это поможет нам в наших лоскутных действиях. При проверке альтернатив этого, beautiful-soup вступил в игру, но я не нашел его причудливым или более способным, чем request-html. Если бы я мог забить больше голов с помощью request-html, зачем тогда использовать beautifulsoup 4. Я не хочу больше распускать волосы, выясняя это. 4, Сайт: Box Office Mojo: – мы собираемся утилизировать данные о фильмах…с этого сайта мы ясно видим, что 2019 Lion King занял второе место в конце игры Avenger.

Скриншот с 2020-04-18 14-02-27.png

Я не очень большой любитель кино поэтому не могу дать никаких дополнительных подробностей об этих двух фильмах я не видел ни одного

— Показываю тебе ее не все разговоры

Получение данных из url (используя request.get(URL_TO_WHERE_YOU_SCRAP_DATA) Запустите IDE, создайте файл с вашим предпочтительным именем, которое я называю своим scrapper.py Я создам функцию, которая принимает URL-адрес и имя файла,(пытаясь добиться СУХОГО). Он принимает URL-адрес и имя файла(мы намерены сохранить данные в файле, чтобы подтвердить, что мы получаем их с сайта), а затем инициализируем функцию, чтобы выполнить наши запросы на извлечение данных

import requests
def url_to_txt(url, file_name="files/world.txt"):
    r = requests.get(url)
    if r.status_code == 200:
        html_text = r.text
        with open(file_name, 'w') as f:
            f.write(r.text)
        return html_text
    return ""
url = "https://www.boxofficemojo.com/year/world"
html_text = url_to_txt(url)

Прочитав Извлечение данных из URL-адреса в табличный формат (используя requests_html), мы убедились, что наши данные сохраняются. Нам нужно получить объекты данных (фактический текст с веб-страницы), то есть в нашем случае мы проходим через табличные данные. Мы получаем html атрибут данных

def convert_to_list_of_list(data_object):
    # get the html data
    html_data = HTML(html=data_object)

Шаг 2 мы находим атрибут class(css class) нашего элемента (для нас это класс таблицы, который содержит данные, которые мы намерены удалить)

атрибут класса, содержащий данные

#get the table with contain the data
table_class = ".imdb-scroll-table"
r_table = html_data.find(table_class)
Скриншот с 2020-04-18 22-46-54.png

Далее идет получение элементов таблицы, содержащих наши данные. Мы получаем все строки таблицы и повторяем итерацию, чтобы получить данные и добавить их в список в таблице, как показано ниже.

parsed_table = parsed_table = r_table[0]
rows = parsed_table.find("tr")
# the header
header_row = rows[0]
header_row_col = header_row.find("th")
# get the header names
header_name = [x.text for x in header_row_col]
# don't iterate through header elements
for row in rows[1:]:
    cols = row.find("td")
row_data = []
    # get index
    for i, col in enumerate(cols):
        # print(i, col.text, "\n\n")
        row_data.append(col.text)
    table_data.append(row_data)

Ввод данных в CSV Теперь у нас есть наши данные. Печать ваших данных у вас должно быть что-то вроде этого. Таким образом, табличный формат данных. заголовок и первая строка данных Теперь давайте сохраним данные в csv. Определите функцию ,которая принимает данные, заголовок таблицы и имя файла . Мы используем pandas для создания фрейма данных наших отформатированных данных, а затем сохраняем его

Скриншот с 2020-04-18 23-08-40.png
def put_data_to_csv(data, headers, file_name=None):
    df = pd.DataFrame(data, columns=headers)
    df.to_csv(f'files/{file_name}', index=False)

В конце нашего путешествия у нас есть наши данные, сохраненные в формате csv , вы можете создавать модели для сохранения ваших данных в базе данных, но наша главная цель состояла в том, чтобы получить данные. Что вы с ним сделаете, я оставляю на ваше усмотрение или творчество. Заключение Вы можете получить полный код обновления на моей странице github.https://github.com/abedkiloo/data_scrapping