2016-02-11 3 views
0

У меня есть HTML код, который выглядит следующим образом:экстракт строки таблицы с XPATH

<TR ALIGN="LEFT"> 
<TD headers="usdot_number" ><center><font size="-1" face="Arial, Helvetica">1259247</FONT></center></TD> 
<TD headers="prefix"><center><font size="-1" face="Arial, Helvetica">MC</FONT></center></TD> 
<TD headers="docket_number" ><center><font size="-1" face="Arial, Helvetica">493001</FONT></center></TD> 
<TD headers="legal_name" ><center><font size="-1" face="Arial, Helvetica"> E L ZAPATA TRANS INC</FONT></center></TD> 
<TD headers="dba_name">&nbsp;</TD> 
<TD headers="city" ><center><font size="-1" face="Arial, Helvetica">SPRING VALLEY</FONT></center></TD> 
<TD headers="state" ><center><font size="-1" face="Arial, Helvetica">CA</FONT></center></TD> 
<td headers="view_details"><center><font size="-1" face="Arial, Helvetica"> 
<BR> 
<FORM ACTION="pkg_carrquery.prc_getdetail" METHOD="POST"> 
<INPUT TYPE="hidden" NAME="pv_apcant_id" VALUE="406294"> 
<INPUT TYPE="hidden" NAME="pv_vpath" VALUE="LIVIEW"> 
<input type="submit" value="HTML" onClick=""> 
</FORM> 
</font></center></td> 
<td headers="view_details"><center><font size="-1" face="Arial, Helvetica"> 
<BR> 
<FORM ACTION="http://li-public.fmcsa.dot.gov/reports/rwservlet" METHOD="POST" name="reportForm" onSubmit="submitReportRequest(this.rptSummit,this)"> 
<INPUT TYPE="hidden" NAME="hidden_run_parameters" VALUE="lirpt"> 
<INPUT TYPE="hidden" NAME="report" VALUE="/u01/oracle/lirpts/li_carrier.rdf"> 
<INPUT TYPE="hidden" NAME="p_apcant" VALUE="406294"> 
<INPUT TYPE="hidden" NAME="p_user" VALUE="WEBLIVIEW"> 
<INPUT TYPE="submit" VALUE="Report" name="rptSummit"> 
</FORM> 
</td> 

Я хочу, чтобы извлечь некоторые значения каждого TD (usdot_number, docket_number, dba_name и legal_name) и значение pv_apcant_id (406294) из пример. Я пытаюсь начать с:

('//TABLE/TD headers/') 

Но не работает. Я не знаю, как иметь дело с выражением TD[space]headers=value/. Кто-нибудь может помочь мне с предложением?

Спасибо!

ответ

1

Чтобы получить доступ к атрибуту в XPaths, вам необходимо использовать символ @.

Вот как вы можете получить usdot_number текст:

response.xpath("//td[@headers = 'usdot_number']/center/font").extract() 

Вот выражение образца для извлечения pv_apcant_id значения:

response.xpath("//input[@name = 'pv_apcant_id']/@value").extract() 
+0

Отлично! Благодаря! Последний вопрос, как я могу настроить мою функцию синтаксического анализа, чтобы выполнить извлечение? Я попытался с: определение функции разбора (я, ответ): для Сель в response.xpath ('// таблицы'): USDOT = sel.xpath ("// тд [@headers = 'usdot_number']/center/font "). extract()' И не работает. Большое спасибо. –

+2

@chango не то, что внутреннее выражение должно начинаться с '.':' sel.xpath (".// td [@headers = 'usdot_number']/center/font"). Extract() '. Надеюсь, это поможет. – alecxe

Смежные вопросы