Как я могу проанализировать эту HTML таблицу с помощью XPATH? - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь получить содержимое таблицы HTML с помощью XPath, я использую Mechanicalsoup, чтобы получить форму и отправить ее (данные находятся за формой отправки), как только я нажимаю на вторую форму, я беру URL и передать его для разбора, но я получаю AttributeError: 'list' object has no attribute 'xpath'

import mechanicalsoup
import requests
from lxml import html
from lxml import etree


#This Will Use Mechanical Soup to grab the Form, Subit it and find the Data Table
browser = mechanicalsoup.StatefulBrowser()
winnet = "http://winnet.wartburg.edu/coursefinder/"
browser.open(winnet)
Searchform = browser.select_form()
Searchform.choose_submit('ctl00$ContentPlaceHolder1$FormView1$Button_FindNow')
response1 = browser.submit_selected() #This Progresses to Second Form
dataURL = 'https://winnet.wartburg.edu/coursefinder/Results.aspx' #Get URL of Second Form w/ Data


pageContent=requests.get(dataURL)
tree = html.fromstring(pageContent.content)
dataTable = tree.xpath('//*[@id="ctl00_ContentPlaceHolder1_GridView1"]')
print(dataTable)
for row in dataTable.xpath(".//tr")[1:]:
    print([cell.text_content() for cell in row.xpath(".//td")])

#XPath to Table
#//*[@id="ctl00_ContentPlaceHolder1_GridView1"]

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

1 Ответ

1 голос
/ 27 января 2020

Я не уверен, но я верю, что вы после чего-то вроде этого. Если это не так, вы, вероятно, можете изменить его, чтобы он оказался там, где вы хотите.

import pandas as pd
rows = [] #initialize a collection of rows
for row in dataTable[0].xpath(".//tr")[1:]: #add new rows to the collection
    rows.append([cell.text_content().strip() for cell in row.xpath(".//td")])

df = pd.DataFrame(rows) #load the collection to a dataframe
df

Вывод (простите за форматирование):

Просмотр подробностей A C 121 01 Принципы бухгалтерского учета I Pilcher, AMWF 10:45 AM-11:50AM 45/40/0 WB C 116 2019-20 WI 1.00

Подробнее A C 122 01 Принципы бухгалтерского учета II Pilcher , MWF 12:00 PM-13: 05 PM 45/42/0 WB C 116 2019-20 WI 1,00

et c.

...