1

このページの名前と小見出しを抽出しようとしています (たとえば)。名前の抽出には問題はありませんが、小見出しには失敗しています。Chrome の inspect 要素を使用して、小見出しテキスト「Canada Census, 1901」が次のように埋め込まれていることを確認しました。

<div class="person-info">
    <div class="title ng-binding">Helen Brad in household of Geo Wilcock</div>
    <div class="subhead ng-scope ng-binding" data-ng-if="!recordPersonCentric">Canada Census, 1901</div>

そこで、スクリプトを次のようにコーディングしました。

import urllib2
import re
import csv
from bs4 import BeautifulSoup
import time

def get_FamSearch():

    link = "https://example.org/pal:/MM9.1.1/KH11-999"
    openLink = urllib2.urlopen(link)
    Soup_FamSearch = BeautifulSoup(openLink, "html")
    openLink.close()

    NameParentTag = Soup_FamSearch.find("tr", class_="result-item highlight-person")
    if NameParentTag:
        Name = NameParentTag.find("td", class_="result-value-bold").get_text(strip=True)
        name_decode = Name.encode("ascii", "ignore")
        print name_decode

    SubheadTag = Soup_FamSearch.find("div", class_="subhead ng-scope ng-binding")
    if SubheadTag:
        print SubheadTag.get_text(strip=True)

get_FamSearch()

これは、小見出しを見つけて抽出することができない結果です。

Helen Brad
[Finished in 2.2s]
4

1 に答える 1

2

経由しているページにはwithクラスurllib2が含まれていません。実際の見出しは、ブラウザ側で実行される JavaScript の助けを借りて非同期的に作成されます。divsubhead

必要なデータは異なる方法で提示されます。これが私にとってうまくいくものです:

print Soup_FamSearch.find('dt', text='Title').find_next_sibling('dd').text.strip()

版画:

Canada Census, 1901
于 2014-09-02T19:05:59.783 に答える