1

私はpythonが初めてで、BeautifulSoupを理解しようとしています。

私はこのコードを実行しましたが、私が望む方法ではありません:

for abc in soup.findAll(['p',{'a':re.compile('href="/download/*')}]):
    value=abc.text
    print value

このページの複数の「ブロック」は次のとおりです。

<div class="">
  <div class="ABC">
    <p>
      <a href="/download/1234/abcde/fghij">String1</a>
    </p>
    <p class="data">
      String2 <a href="/user/4649/abc">String3</a> String2 
    </p>
  </div>
  <img src="/img/abc.png" alt="String4" title="String5" />
</div>

この「ブロック」をすべて読み取り、辞書に変換したい(?): [Link'/download/1234/abcde/fghij', Name'String1', User'String3', alt'String4, title'String5']

これで、名前を検索してリンクを取得できます

4

1 に答える 1

1

次のようなことを試してください:

for outer in soup.find_all("div", attrs={"class": ""}):
    a = outer.find("a")
    img = outer.find("img")
    entry = { "Link": a.get("href")
            , "Name": a.text
            , "User": outer.find("p", "data").find("a").text
            , "alt": img.get("alt")
            , "title": img.get("title")
            }
    print entry

これにより、必要なものが取得され、辞書に入れられます。

于 2013-08-31T17:09:09.967 に答える