商品一覧ページそれぞれの個別ページに遷移してスクレイピングしたいと思っています。
ただ該当のページがclass や idが少ないので、色々な方法で試みるのですが、思ったような結果になりません。
下記のようなソースページからタグで特定して tbody 内の dd 内の aタグを特定したいです。
html スクレイピング元
1<tbody> 2 <tr class layout="list"> 3 <td> 4 <dt class="vm"> 5 <a href="/item/1001"> 6 <span class="thumb"> 7 <img src=''> 8 </span> 9 </dt> 10 <dd> 11 <div class="small"> </div> 12 <div> 13 <a href="/item/1001" class>商品1</a> 14 </dd> 15 </td> 16</tr> 17 18 <tr class layout="list"> 19 <td> 20 <dt class="vm"> 21 <a href="/item/1002"> 22 <span class="thumb"> 23 <img src=''> 24 </span> 25 </dt> 26 <dd> 27 <div class="small"> </div> 28 <div> 29 <a href="/item/1002" class>商品2</a> 30 </dd> 31 </td> 32</tr> 33 34 <tr class layout="list"> 35 <td> 36 <dt class="vm"> 37 <a href="/item/1003"> 38 <span class="thumb"> 39 <img src=''> 40 </span> 41 </dt> 42 <dd> 43 <div class="small"> </div> 44 <div> 45 <a href="/item/1003" class>商品3</a> 46 </dd> 47 </td> 48</tr> 49</tbody> 50 51<div class="box"> 52 <dt class="vm"> 53 <a href="/item/1004"> 54 <span class="thumb"> 55 <img src=''> 56 </span> 57 </dt> 58 <dd> 59 <div class="small"> </div> 60 <div> 61 <a href="/item/1004">商品4</a> 62 </dd> 63 64 <dt class="vm"> 65 <a href="/item/1005"> 66 <span class="thumb"> 67 <img src=''> 68 </span> 69 </dt> 70 <dd> 71 <div class="small"> </div> 72 <div> 73 <a href="/item/1005">商品5</a> 74 </dd> 75 76</div>
やった事 tbodyで要素抽出した後でリンクを抽出できるが、同じタグが2つあるので、2つずつ抽出してしまう。
python
1tbody_links= soup.find_all('tbody')[0].find_all(href=re.compile("/item/")) 2pickup_links = [elem.attrs['href'] for elem in tbody_links] 3pickup_links 4#/item/1001 (2つずつしか抽出できない) 5#/item/1001 6#/item/1002 7#/item/1002 8#/item/1003 9#/item/1003 10
注意点
dt や dd で抽出してしまうと tbody 以外のリンク(item/1004,item/1005も抽出してしまいます
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/27 23:43