Получить данные из Pandas DataFrame, используя значения столбцов

Когда вы делаете WebRequest, вы просите сервер предоставить вам файл с образцом, содержимое этого файла еще не было разобрано / выполнено веб-браузером, и поэтому javascript на нем еще ничего не сделал.

Вам нужно использовать инструмент для выполнения JavaScript на странице, если вы хотите увидеть, как выглядит страница после анализа в браузере. Один из вариантов - использование встроенного веб-браузера .net: http://msdn.microsoft.com/en-au/library/aa752040 (v = vs.85) .aspx

Элемент управления веб-браузером может перемещаться и загружать страницу, а затем вы можете запросить его DOM, который будет изменен JavaScript на странице.

EDIT (пример):

Uri uri = new Uri("http://www.somewebsite.com/somepage.htm");

webBrowserControl.AllowNavigation = true;
// optional but I use this because it stops javascript errors breaking your scraper
webBrowserControl.ScriptErrorsSuppressed = true;
// you want to start scraping after the document is finished loading so do it in the function you pass to this handler
webBrowserControl.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowserControl_DocumentCompleted);
webBrowserControl.Navigate(uri);

private void webBrowserControl_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    HtmlElementCollection divs = webBrowserControl.Document.GetElementsByTagName("div");

    foreach (HtmlElement div in divs)
    {
        //do something
    }
}

0
задан meW 19 February 2019 в 11:10
поделиться

3 ответа

Здесь:

for row in df.itertuples():
    print(row.num_legs)
  # print(row.num_wings)   # Other column values

# Output
4
2
0
ответ дан meW 19 February 2019 в 11:10
поделиться

Я столкнулся с той же ошибкой при использовании переменной.

v = 'num_legs'
for row in df.itertuples():
    print(row[v])

TypeError: tuple indices must be integers or slices, not str

Использовать df.itertuples() и использовать имя атрибута в качестве переменной.

v = 'num_legs'
for row in df.itertuples():
    print(getattr(row, v))

В конце df.itertuples() быстрее, чем df.iterrows().

0
ответ дан Mohit Musaddi 19 February 2019 в 11:10
поделиться

вы можете использовать iterrows(),

for u,row in df.iterrows():
    print(u)
    print (row)
    print (row['num_legs'])

O / P:

dog
num_legs     4
num_wings    0
Name: dog, dtype: int64
4
hawk
num_legs     2
num_wings    2
Name: hawk, dtype: int64
2
0
ответ дан Mohamed Thasin ah 19 February 2019 в 11:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: