Тяньсю! Можно ли использовать Pandas для написания сканеров?

анализ данных
Тяньсю! Можно ли использовать Pandas для написания сканеров?

Публичный аккаунт WeChat: «Python Reading Finance»
Если у вас есть какие-либо вопросы или предложения, пожалуйста, оставьте сообщение в публичном аккаунте

говорить оPandasизread.xxxРяд функций, первая реакция каждого будет думать о наиболее часто используемых.pd.read_csv()иpd.read_excel(), большинство людей, вероятно, не использовали егоpd.read_html()эта функция. Хотя это занижено, это очень мощно для захватаТаблица табличных данных, это просто артефакт. Давайте представим это подробно.

Когда вы просматриваете веб-страницы, вы часто видите такие таблицы данных, как

Данные о кассовых сборах фильма

Данные мирового рейтинга университетов

финансовые данные

Если вы посмотрите на структуру HTML веб-страницы (браузер Chrome F12), вы обнаружите, что у них есть общая черта, не только таблицы, но иСтруктура таблицыОтображаемые табличные данные, общая структура веб-страницы выглядит следующим образом

<table class="..." id="...">
     <thead>
     <tr>
     <th>...</th>
     </tr>
     </thead>
     <tbody>
        <tr>
            <td>...</td>
        </tr>
        <tr>...</tr>
        <tr>...</tr>
        ...
        <tr>...</tr>
        <tr>...</tr>        
    </tbody>
</table>

Для данных табличного типа с аналогичной структурой веб-страницыpd.read_html()Это удобно, он может захватить все формы на веб-странице и использоватьDataFrameФорма возвращается в виде списка. В частности, это процесс:

Позвольте мне сначала представитьread_htmlнекоторые из основных параметров

read_html

  • io:str или файлоподобный

    Получение URL-адресов, файлов, строк. URL-адрес не принятhttpsПопробуйте удалитьsполз

  • header:int или похожий на список или None

    Указывает строку, в которой расположены заголовки столбцов.

  • attrs : dict or None, optional

    Передайте словарь, чтобы отфильтровать конкретную таблицу по ее атрибутам

  • parse_dates:буль

    Разобрать дату

Далее давайте возьмем в качестве примера сканирование фонда Sina Finance, владеющего акциями. URL-адрес:http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p=1

В этой части 6 страниц. Нажмите на разные номера страниц, чтобы увидеть, что URL-адрес запроса в основномpпараметры меняются,p=nпредставляет собой первыйnстраница, поэтомуforВы можете просмотреть все URL-адреса. Поняв меняющиеся правила URL-адресов, вы можете с радостью сканировать данные и добавлять код.

import pandas as pd
df = pd.DataFrame()
for i in range(6):
    url = 'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p={page}'.format(page=i+1)
    df = pd.concat([df,pd.read_html(url)[0]])
    print("第{page}页完成~".format(page=i+1))
df.to_csv('./data.csv', encoding='utf-8', index=0)

Весь процесс не требует использования регулярных выражений илиxpathВ ожидании инструментов данные можно просмотреть всего за несколько строк кода. Разве это не супер непобедимо и удобно? Спешите и начать!

При сканировании некоторых небольших данных в будущем, если вы столкнетесь с такого родаТаблица типа таблицы, можно напрямую пожертвоватьread_htmlЭтот артефакт, другие еще обдумывают правила,xpathКак писать, вы уже облазили данные, думать об этом очень удобно!

Отсканируйте код, чтобы подписаться на официальный аккаунт"Питон Чтение Финансов", получите галантерею в первый раз!