2

PythonでWebページをスクレイピングしようとしています。1 行にあるタグの結果は簡単に取得できましたが、複数行にまたがるタグの場合、私のコードでは何も取得できません。

HTML ソースでは、単一行タグは次のように表示されます。

<td><span class="facultyName">John Matthew Falletta, MD</span>

複数の行タグが次のように存在します。

<td><span class="label">Division:</span>
            &nbsp;&nbsp;
                  </td><td>Hematology/Oncology</td>

ここに私が書いたものがあります:

patFinderFullname = re.compile('<span class="facultyName">(.*)</span>')

fullname = re.findall(patFinderFullname,webpage)         #works fine

patFinderDivision = re.compile('<span class="label">Division:</span>&nbsp;&nbsp;</td><td>(.*)</td>')

division = re.findall(patFinderDivision,webpage)       #doesn't work

ここで、私の webpage 変数には、スクレイピングする必要がある URL が含まれています。誰かが私が欠けているもの、またはどこが間違っているかを指摘できますか?

4

2 に答える 2

5

BeautifulSoupの使用を強くお勧めします。HTMLドキュメントを解析するためのPythonライブラリです。

追伸:独自のコードを使い続けたい場合は、\s*を使用して正規表現の空白をスキップしてください。

patFinderDivision = re.compile('<span class="label">Division:</span>\s*&nbsp;&nbsp;\s*</td><td>(.*)</td>')
于 2013-02-15T05:03:26.377 に答える
1

除算を引き出すために必要な正規表現の種類にサンプルを追加するだけです。

re.compile('<span class="label">Division:</span>\s*&nbsp;&nbsp;\s*</td><td>(.*?)</td>')
于 2013-02-15T05:23:38.790 に答える