我正在使用Scrapy
抓取一个网站。我有以下html结构
<dl>
<dt><b>Notice Date</b></dt>
<dd>12/17/2018<br> </dd>
<dt><b>Notice Type</b></dt>
<dd>Synopsis<br> </dd>
<dt><b>NAICS</b></dt>
<dd>238990 — All Other Specialty Trade Contractors<br> </dd>
<dt><b>Contracting Office</b></dt>
<dd>1108 South R Street Fort McCoy WI 54656-5142<br> </dd>
<dt><b>ZIP Code</b></dt>
<dd>54656-5142<br> </dd>
<dt><b>Solicitation Number</b></dt>
<dd>W911SA-18-B-2028<br> </dd>
<dt><b>Point of Contact</b></dt>
<dd>Jamie Gregar, Contract Specialist, Phone 6083881007 <br> </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> </dd>
<dt><b>Small Business Set-Aside</b></dt>
<dd>HUBZone<br> </dd>
<dt><b>Description</b></dt>
<dd>some description here<br> </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> </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> </dd>
<dt><b>Record</b> </dt>
<dd>SN05176005-F 20181219/181217230006 (fbodaily.com) <br> </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>
标签,其中将包含相关数据,并且数据可能包含不同的类型(例如,电子邮件地址,文字,Web链接)。
到目前为止,我可以使用<dl>
约定来使用xpath
标签。因此,有人可以建议我一种使用xpath
从<dl>
标签开始将这些数据分别放入给定字段的方法。
答案 0 :(得分:0)
for dt in response.css('dt'):
key = dt.get()
value = dt.xpath('./following::dd[1]').get()
您可能希望进一步清理数据,使用.//text()
XPath或extract_text()
仅提取文本。