Как получить данные внутри тега <dl>с помощью xpath - PullRequest
0 голосов
/ 02 января 2019

Я использую Scrapy для чистки сайта.У меня есть следующая html структура

<dl>
  <dt><b>Notice Date</b></dt>
     <dd>12/17/2018<br>&nbsp;</dd>
  <dt><b>Notice Type</b></dt>
     <dd>Synopsis<br>&nbsp;</dd>
  <dt><b>NAICS</b></dt>
     <dd>238990 — All Other Specialty Trade Contractors<br>&nbsp;</dd>
  <dt><b>Contracting Office</b></dt>
     <dd>1108 South R Street Fort McCoy WI 54656-5142<br>&nbsp;</dd>
  <dt><b>ZIP Code</b></dt>
     <dd>54656-5142<br>&nbsp;</dd>
  <dt><b>Solicitation Number</b></dt>
     <dd>W911SA-18-B-2028<br>&nbsp;</dd>
  <dt><b>Point of Contact</b></dt>
     <dd>Jamie Gregar, Contract Specialist, Phone 6083881007 <br>&nbsp;</dd>
  <dt><b>E-Mail Address</b></dt>
     <dd><a href="mailto:jamie.j.gregar.civ@mail.mil">jamie.j.gregar.civ@mail.mil</a<br>&nbsp;</dd>
  <dt><b>Small Business Set-Aside</b></dt>
     <dd>HUBZone<br>&nbsp;</dd>
  <dt><b>Description</b></dt>
     <dd>some description here<br>&nbsp; </dd>
  <dt><b>Web Link</b></dt>
     <dd><a target="outside" href="https://www.fbo.gov/notices/54ba577b59c07b3757739e138b20ef3c">
Link To Document</a> <br>(https://www.fbo.gov/notices/54ba577b59c07b3757739e138b20ef3c)
<br>&nbsp; </dd>
  <dt><b>Place of Performance</b></dt>
     <dd><i>Address:</i> Laredo, TX </dd>
     <dd><i>Zip Code:</i> 78040 </dd>
     <dd><i>Country:</i> US <br>&nbsp; </dd>
  <dt><b>Record</b> </dt>
     <dd>SN05176005-F 20181219/181217230006 (fbodaily.com) <br>&nbsp; </dd>
  <dt><b>Source</b></dt>
     <dd><a target="fedbizopps" href="ftp://ftp.fbo.gov/FBOFeed20181217"> FedBizOpps Link to This Notice</a><br>(may not be valid after Archive Date) </dd>

</dl>

В приведенной выше структуре вы можете видеть тег <dt>, относящийся к заголовку данных, а теги <dd>, следующие за ним, будут содержать соответствующие данные и данные.Может состоять из различных типов (например, адреса электронной почты, текст, веб-ссылки).

До сих пор я мог получить до <dl> тег с использованием xpath соглашений.Так может кто-нибудь предложить мне способ получить эти данные отдельно в указанные поля, используя xpath начинается с тега <dl>.

1 Ответ

0 голосов
/ 16 января 2019
for dt in response.css('dt'):
   key = dt.get()
   value = dt.xpath('./following::dd[1]').get()

Возможно, вы захотите очистить данные дальше, извлекая только текст, используя .//text() XPath или extract_text().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...