Я пытаюсь разобрать вывод html из вызова URL, но обнаружил, что изо всех сил пытаюсь заставить его работать.
Я использую следующий код:
import urllib2
import base64 as b64
import lxml.html as LH
request = urllib2.Request('http://%s%s' % (fInput[1], fInput[2]))
base64string = b64.encodestring('%s:%s' % (fInput[3], fInput[4])).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
response = urllib2.urlopen(request)
html = response.read()
root = LH.fromstring(html)
sibling_content = lambda x: [b.getparent().getnext().text_content() for b in root.cssselect("td b:contains('{0}')".format(x))]
fields = ['groupList','namelist']
for result in zip(*[sibling_content(field) for field in fields]):
print result
Результат, который у меня есть, когда я печатаю вывод:
('Admins', '\nme\nmyself\nirene')('guests', '\nhin\nhinself\nbacon')
Выход, который подходит для того, что мне нужно, имеет такой массив, поэтому я мог бы вставить его в базу данных:
['Admins', 'me','myself','nirene'],['guests', 'hin','hinself','bacon']
После этого я отправляю HTML-код, возвращенный HTTP-запросом:
<BODY bgcolor="#dddddd">
<TABLE bgcolor="#dddddd" border="1">
<TR>
<TD valign="top"><B>MainList</B></TD>
<TD>
<TABLE>
<TR>
<TD>
<TABLE bgcolor="#dddddd" border="1">
<TR>
<TD valign="top"><B>groupList</B></TD>
<TD>Admins</TD>
</TR>
<TR>
<TD valign="top"><B>namelist</B></TD>
<TD>
<TABLE>
<TR>
<TD>me</TD>
</TR>
<TR>
<TD>myself</TD>
</TR>
<TR>
<TD>irene</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<TABLE bgcolor="#dddddd" border="1">
<TR>
<TD valign="top"><B>groupList</B></TD>
<TD>guests</TD>
</TR>
<TR>
<TD valign="top"><B>namelist</B></TD>
<TD>
<TABLE>
<TR>
<TD>hin</TD>
</TR>
<TR>
<TD>hinself</TD>
</TR>
<TR>
<TD>bacon</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</BODY>
Любые идеи о том, как я могу заставить это работать?
Заранее спасибо.
hin
,hinself
,bacon
в вашем ожидаемом выводе нигде не найдены в вашем HTML. - person Bryan   schedule 10.01.2013