このコメントでは↓のsoupを使った場合のイメージで解説しますね。
python
1from bs4 import BeautifulSoup
2html_data="""
3<html><head></head>
4<body>
5 <a href="http://example.com">テスト1</a></br>
6 <p>
7 <a href="http://example.net">テスト2</a></br>
8 <a href="http://example.org">テスト3</a></br>
9 </p>
10</body>"""
11
12soup = BeautifulSoup(html_data, "lxml")
のaとかpが何をあわらしているのか分かりません。
aやpはタグを表しています。
この状態で
soup.a
とすると、soupの中で最初にaタグで囲まれた箇所が取得されます。つまり、
print soup.a を実行すると、
<a href="http://example.com">テスト1</a>
が出力されます。
同様に、
soup.p
とすると、soupの中で最初にpタグで囲まれた箇所が取得されます。つまり、
print soup.p を実行すると、
<p><a href="http://example.net">テスト2</a></br><a href="http://example.org">テスト3</a></br></p>
が出力されます。
更なる例として、
soup.p.a
とすると、soupの中で最初にpタグで囲まれた箇所 の中で最初にaタグで囲まれた箇所が取得されます。つまり、
print soup.p.aを実行すると
<a href="http://example.net">テスト2</a>
が出力されます。
今の soup.p.a という書き方だとpタグで囲まれた箇所の中で""最初に""aタグで囲まれた箇所しか取得されないので、2番目以降を使いたい時にはfind_all関数を使用します。
soup.p.find_all("a")
とすると、pタグで囲まれた箇所 の中でaタグで囲まれた箇所を""全て""リスト型で取得します。
つまり、pタグで囲まれた箇所の中で2番目のaタグで囲まれた箇所を出力したい場合には
print soup.p.find_all("a")[1]
とすればよいのです。これを実行すると
<a href="http://example.org">テスト3</a>
が出力されます。
また、タグに対してstringを指定すると、そのタグで囲まれた文字列を取得します。
つまり、
print soup.a.string を実行すると、
テスト1
が出力されます。
以上です。
いかがでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。