0

HTMLファイルのこの部分を分離することができました

<div class="item_display_label"><strong>**Name of Office:** </strong></div>
<div class="item_display_field">**Dacotah**</div>
<div class="item_display_label"><strong>**Federal Electoral District:** </strong></div>
<div class="item_display_field">
**St. Boniface
(Manitoba)**
</div>
<div class="item_display_label"><strong>**Dates:** </strong></div>
<div class="item_display_field">
<table border="0" cellpadding="0" cellspacing="0" class="data_table">
<tr>
<th class="th_heading" valign="top">Establishment Re-openings</th>
<th class="th_heading" valign="top">Closings</th>
</tr>
<tr>
<td class="index" valign="top">**1903-05-01**</td>
<td class="index" valign="top">**1970-05-01**</td>
</tr>
</table>
</div>
<div class="item_display_label"><strong>Postmaster Information: </strong></div>
<div class="item_display_label"><strong>**Additional Information:** </strong></div>
<div class="item_display_field">
**Closed due to Rural Mail Delivery service via Headingley, R.R. 1**<br/><br/>
**Sec. 25, Twp. 10, R. 2, WPM - 1903-05-01**<br/><br/>
**Sec. 34, Twp. 10, R. 2, WP**M<br/><br/>
**SW 1/4 Sec. 35, Twp. 10, R. 2, WPM**<br/><br/>
</div>

を使用して:

    from bs4 import BeautifulSoup
    soup = BeautifulSoup(open("post2.html"))
    with open("post2.txt", "wb") as file:
    for link in soup.find_all('div',['item_display_label','item_display_field']):
    print  link

太字のフィールドを Beautiful Soup で csvにエクスポートする必要があります。さまざまな方法を試しましたが、結果はありませんでした。csv ファイルの列は、「官庁名」、「連邦選挙区」、「オープニング」、「クロージング」、「情報」である必要があります。手がかりはありますか?どうもありがとう

編集:

私はこれでcsvを書き込もうとしています:

    from bs4 import BeautifulSoup
    import csv
    soup = BeautifulSoup(open("post2.html"))
    f= csv.writer(open("post2.csv", "w"))   
    f.writerow(["Name", "District", "Open", "Close","Info"]) 
    for link in soup.find_all('div', ['item_display_label',   'item_display_field'].__contains__):
   print  link.text.strip()
   Name = link.contents[0]
   District = link.contents[1]
   Open = link.contents[2]
   Close = link.contents[3]
   Info = link.contents[4]
   f.writerow([Name, District, Open, Close, Info])

しかし、そもそも最後のフィールド (情報) しか取得しません。

4

1 に答える 1

0

以下を試してください:

from bs4 import BeautifulSoup
soup = BeautifulSoup(open("post2.html"))
#for link in soup.find_all('div', lambda cls: cls in ['item_display_label', 'item_display_field']):
for link in soup.find_all('div', ['item_display_label', 'item_display_field'].__contains__):
    print  link.text.strip()

lxmlxpath での使用:

import lxml.html

tree = lxml.html.parse('post2.html')
for x in tree.xpath('.//div[@class="item_display_label"]//text()|.//div[@class="item_display_field"]//text()'):
    print x.strip()
于 2013-09-14T05:12:07.770 に答える