Вступление в Интернет, соскабливая таблицу
Что такое сеть? Из моих ограниченных знаний Web Scraping получает информацию с веб -страницы, используя подчеркивающий HTML -код, который содержит эту жизненно важную информацию.
Сегодня я собираюсь пройтись по общему процессу, чтобы скрепить стол из Интернета. В процессе я надеюсь ответить на случайный вопрос: влияет ли холодная погода на игру защитника?
Что вам нужно:
- ответы (Библиотека HTTP)
- BeautifulSoup4 (Библиотека анализатора)
- Панды (Библиотека манипуляций с данными)
Используйте эту ссылку для получения дополнительной информации о настройке
Обзор себестоимости
1) Получите ответ 2) Найдите объект 3) разрабатывать и хранить объект 4) Завершите данные
1) Получите ответ.
Это легкая часть. Вы используете «ответы», чтобы получить ответ от URL -адреса, а затем превращаете ответ в суп «суп» с BS4, который затем может ориентироваться и проанализировать.
url ='http://www.espn.com/nfl/qbr/_/type/player-week/week/3' response = get(url) #getting url response nfl = soup(response.content, 'html.parser') #turning the response into soup
2) Найти объект (сложная часть)
Для начинающих это сложная часть, потому что HTML немного пугает расшифровать в начале, но есть некоторые основные принципы, которые помогут.
С BS4 вы можете ориентироваться в HTML -суп двумя способами.
1) Родитель, ребенок, иерархия сестры HTML структурированы с тегами «родитель» более высокого уровня (классификаторы) с тегами «дочерний», которые он охватывает. У BS4 есть метод для вручную перемещать линию по линии через HTML, если вам нужно точно настроить, где вы находитесь.
2) .find () и .find_all ( )
Это более простой метод. Вы можете сказать BS4, чтобы найти конкретный тип тега и какой тег «имя», который вы ищете.
Как узнать, какое имя вы хотите? Легко, просто перейдите по веб -странице и щелкните правой кнопкой мыши объект/таблицу, которую вы хотите проанализировать и «проверить» ее. Это должно открыть окно, которое направит вас на соответствующий HTML -код.
Еще проще в HTML – это таблицы, потому что они структурированы довольно похожими для большинства веб -страниц.
1) Сначала найдите ‘таблица’ ярлык. Это захватит весь объект таблицы. 2) Следующие теги Find_all Row As ‘tr’ Анкет Это захватит все ряды в столе. 3) Следующие теги ячейки find_all как ‘td’ за ряд. Это захватит все элементы ячеек в каждом ряду. 4) Иногда строка заголовка может быть помечать как ‘th’ Анкет Это полезно, если вы хотите пометить свои столбцы так же, как и заголовки.
Я нахожу, что это медленно проработать каждый объект, чтобы найти мое место в коде HTML, было лучше. Много раз я бы выявил другой объект, чтобы увидеть ответ и соответствующим образом скорректировать. Вначале это красивый итеративный процесс, и вам, возможно, придется отступить, чтобы двигаться вперед. Я считаю, что возвращение на исходную веб -страницу может помочь вам найти, где вы находитесь в HTML -коде.
Общий рабочий процесс:
1) Попытка получить доступ объект/тег 2) Считайте/проверьте # объектов 3) См. Ответ 4) Проверьте с помощью веб -страницы 5) Перейдите дальше в объект или повторите процесс.
Также, если вы застряли с информацией о доступе/навигации, используйте этот лист.
http://akul.me/blog/2016/beautifulsoup-cheatsheet/
Ниже приведен код, обобщающий этот процесс:
tables = nfl.findAll('table') # finding all tables in this soup (lucky for me only one table) len(tables) # Checking # of tables as predicted only 1 rows = qbr_table[0.]findAll('tr') # from that table I know look for rows 'tr' is rows in HTML len(rows) #Verifying how many rows I am trying to get first_row = rows[1] #Inspect one row first_row.findAll('td')[1].text # Looking at one row and one element
3) Разбор и хранить объект.
После того, как вы найдете метод, чтобы найти нужный объект и информацию в таблице. Просто сделайте один и тот же процесс по каждой строке. Я считаю, что функция проанализирует строку в сочетании с пониманием списка, чтобы зацикливаться на всех рядах, лучше всего. Ниже приведен код:
def parse_row(row): return [x.text for x in row.findAll('td')] list_parsed_rows =[parse_row(row) for row in rows[0:]] # list_parsed_rows df = pd.DataFrame(list_parsed_rows)
4) Допустить данные.
Используйте панды, чтобы сдать данные на все, что желает ваше сердце. Я нахожу, что в некотором столбце была несколько информаций, и ему нужно было проанализировать еще дальше.
Ниже приведен результат, который я получил от Web Scraping ESPN для рейтинга квотербека (QBR) и еще одного погодного сайта для температуры. QBR нормализуется от 0 до 100, а 50 – средняя оценка/эффективность QB. В целом, кажется, существует затруднение, как видно из пустоты высокого QBR при низких температурах.
Ваше здоровье!
Оригинал: “https://dev.to/patman17/intro-to-web-scraping-a-table-441b”