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

Вступление в Интернет, соскабливая таблицу

Вступление в Интернет, соскабливая таблицу Что такое сеть? Из моих ограниченных знаний Web Scraping … Tagged with Python, учебник.

Вступление в Интернет, соскабливая таблицу

Что такое сеть? Из моих ограниченных знаний 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”