Answer the question
In order to leave comments, you need to log in
Python parsing (feature strings)?
when parsing characteristics, only the first line is parsed, how can I make all lines parsed?
html file https://www.dropbox.com/s/c2di2sb3i3hhpkm/layta.ht...
from urllib.request import urlopen # for Python 3
# from urllib2 import urlopen # for Python 2
from lxml.etree import XMLSyntaxError
from lxml.html import fromstring
from pandas import DataFrame, ExcelWriter
URL = 'file:///home/artddss/PycharmProjects/untitled2/layta.html'
ITEM_PATH = 'a'
DESCR_PATH = '.wrapper h1'
HARET_PATH = '#product_specifications dt'
HXARET_PATH = '#product_specifications dd'
def parse_courses():
global xar
f = urlopen(URL)
list_html = f.read().decode('utf-8')
list_doc = fromstring(list_html)
df = DataFrame(columns=('name', 'description', 'href'))
for elem in list_doc.cssselect(ITEM_PATH):
a = elem.cssselect('a')[0]
href = a.get('href')
name = a.text
details_html = urlopen(href).read().decode('utf-8')
try:
details_doc = fromstring(details_html)
except XMLSyntaxError:
continue
description = details_doc.cssselect(DESCR_PATH)[0].text_content()
haret_elems_list = [('name', name), ('description', description), ('href', href)]
#характеристики
xariki = details_doc.cssselect(HARET_PATH)[0].text_content()
xariky = details_doc.cssselect(HXARET_PATH)[0].text_content()
haret_elems_list.append((xariki, xariky))
df = df.append(dict(haret_elems_list), ignore_index=True)
writer = ExcelWriter('layta.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='layta', header=True, index=False)
writer.save()
def main():
parse_courses()
if __name__ == '__main__':
main()
<div class="block" id="product_specifications">
<h2>Характеристики Hikvision DS-2CD2642FWD-IS:</h2>
<dl>
<dt>Габаритные размеры, мм</dt>
<dd>95x105x258.6</dd>
<dt>Горизонтальный угол обзора Max, ° </dt>
<dd>98</dd>
<dt>Горизонтальный угол обзора Min, ° </dt>
<dd>30.5</dd>
<dt>Дальность ИК подстветки, м</dt>
<dd>30</dd>
<dt>Максимальное разрешение</dt>
<dd>2688x1520</dd>
<dt>Масса, кг</dt>
<dd>1.2</dd>
<dt>Напряжение питания, В</dt>
<dd>12DC</dd>
<dt>Поддержка Full HD</dt>
<dd>Да</dd>
<dt>Поддержка HD</dt>
<dd>Да</dd>
<dt>Производитель</dt>
<dd>Hikvision</dd>
<dt>Рабочая температура °C</dt>
<dd>-40...+60</dd>
<dt>Размер матрицы</dt>
<dd>1/3</dd>
<dt>Режим "День/Ночь"</dt>
<dd>Механический ИК-фильтр</dd>
<dt>Режим архивации</dt>
<dd>Micro SD</dd>
<dt>Сетевые порты</dt>
<dd>10/100</dd>
<dt>Сетевые протоколы</dt>
<dd>TCP/IP, HTTP, DHCP, DNS, DDNS, RTP, RTSP, PPPoE, SMTP, NTP, SNMP, HTTPS, FTP, 802.1x, Qos (SIP, SRTP, IPv6 опционально)</dd>
<dt>Скорость записи, к/с</dt>
<dd>25</dd>
<dt>Степень защиты</dt>
<dd>IP66</dd>
<dt>Тип корпуса камер</dt>
<dd>Стандартные</dd>
<dt>Тип матрицы</dt>
<dd>CMOS</dd>
<dt>Тип объектива</dt>
<dd>Вариофокальные</dd>
<dt>Тревожные входы</dt>
<dd>1</dd>
<dt>Тревожные выходы</dt>
<dd>1</dd>
<dt>Уличная</dt>
<dd>Да</dd>
<dt>Фокусное расстояние объектива Max, мм</dt>
<dd>12</dd>
<dt>Фокусное расстояние объектива Min, мм</dt>
<dd>2.8</dd>
<dt>Формат сжатия видео сигнала</dt>
<dd>Н.264/ MJPEG/ H.264+</dd>
</dl>
</div>
Answer the question
In order to leave comments, you need to log in
If I understand the question correctly, then the problem is that you always take only the first feature when parsing a page with features:
#характеристики
xariki = details_doc.cssselect(HARET_PATH)[0].text_content()
xariky = details_doc.cssselect(HXARET_PATH)[0].text_content()
haret_elems_list.append((xariki, xariky))
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question