seleniumで DIVタグで絞り込んで aタグのテキストと hrefのデータを取得したい
サンプルHTMLの
div class="details-wrapper"> で絞り込んで
<a タグ部分のテキストとリンクを一覧で取得したい
調べてみました
DIVでclassで絞り込のはできたので、それをさらにby_tag_nameで絞り込めば良さそうな情報を発見しましたがうまくいきません。
file = driver.find_elements_by_class_name('details-wrapper')
file_atag = file.find_elements_by_tag_name('a')
修正追加
file = driver.find_elements_by_class_name('details')
file_atag = file[0].find_elements_by_tag_name('a')
print(file_atag[0].text)
fileの中身が複数あると思ったので[0]を試しにつけてみたら、キーワード取得できました。
となると、 file[0]の部分をカウントアップしながらfile_atag[0].textの部分をfor文で書くとどうなるのでしょうか?
夕方からずっと悩んでなかなか解決できず。お力添えいただけないでしょうか
driver.get(url) print('ページを開く') time.sleep(5) file = driver.find_elements_by_class_name('details') file_atag = file[0].find_elements_by_tag_name('a') print(file_atag[0].text) なんか1こキーワード取れた print('~~~~~~~~~~ここまで〜〜〜〜〜〜')
サンプルHTML
<div class="details-wrapper"> <div class="index" ng-style="ctrl.blockAnimations && ctrl.noTransitions" style="transition: unset;"> 1 </div> <div class="details"> <div class="details-top"> <div class="title" ng-style="ctrl.blockAnimations && ctrl.noTransitions" style="transition: unset;"> <!----><span ng-repeat="titlePart in titleArray" class="" style=""> <a ng-href="/trends/explore?q=/m/0gc0prm&date=now+7-d&geo=JP" ng-attr-title="{{::titlePart.hoverMessage}}" track="['Trending Searches ' + ctrl.currentFeedItemType, 'click', 'item title: ' + titlePart.text]" href="/trends/explore?q=/m/0gc0prm&date=now+7-d&geo=JP" title="「佐津川愛美」を調べる"> 佐津川愛美 </a> <!----><span ng-if="!$last">•</span><!----> </span><!----><span ng-repeat="titlePart in titleArray" class=""> <a ng-href="/trends/explore?q=/g/122bfsrm&date=now+7-d&geo=JP" ng-attr-title="{{::titlePart.hoverMessage}}" track="['Trending Searches ' + ctrl.currentFeedItemType, 'click', 'item title: ' + titlePart.text]" href="/trends/explore?q=/g/122bfsrm&date=now+7-d&geo=JP" title="「主演」を調べる"> 主演 </a> <!----><span ng-if="!$last">•</span><!----> </span><!----><span ng-repeat="titlePart in titleArray" class=""> <a ng-href="/trends/explore?q=/m/02qfhng&date=now+7-d&geo=JP" ng-attr-title="{{::titlePart.hoverMessage}}" track="['Trending Searches ' + ctrl.currentFeedItemType, 'click', 'item title: ' + titlePart.text]" href="/trends/explore?q=/m/02qfhng&date=now+7-d&geo=JP" title="「榊 英雄」を調べる"> 榊 英雄 </a> <!----> </span><!----> </div> <i class="material-icons-extended size-24 gray hidden" ng-class="ctrl.showItemHeaderElements ? 'hidden' : 'visible'" ng-click="ctrl.share($event)" track="['Trending Searches ' + ctrl.currentFeedItemType, 'click', 'share']" ng-style="ctrl.blockAnimations && ctrl.noTransitions" role="button" tabindex="0" style="transition: unset;"> share </i> </div> <div class="details-bottom"> <div ng-class="['subtitles-text-wrapper', ctrl.showItemHeaderElements ? 'visible' : 'hidden']" class="subtitles-text-wrapper visible"> <div class="summary-text" dir="ltr"> <a ng-href="https://article.auone.jp/detail/1/5/9/136_9_r_20220309_1646810141806293" target="_blank" title="「性被害」映画監督による性加害を女優が告発 脚本家からも疑問の声" track="['Trending Searches ' + ctrl.currentFeedItemType, 'click', 'article link: ' + subtitles.sanitizedArticleTitle]" bind-html-compile="subtitles.articleTitle" href="https://article.auone.jp/detail/1/5/9/136_9_r_20220309_1646810141806293">「性被害」映画監督による性加害を女優が告発 脚本家からも疑問の声</a> </div> <div class="source-and-time" title="auone.jp • 3 時間前"> <span ng-class="::{'rtl-in-ltr': ctrl.isArticleSourceRtlInLtrPage}"> auone.jp </span> • <span ng-class="::{'rtl-in-ltr': ctrl.isArticleTimeAgoRtlInLtrPage}"> 3 時間前 </span> </div> </div> <div ng-class="['subtitles-overlap', {visible: !ctrl.showItemHeaderElements, hidden: ctrl.showItemHeaderElements}]" ng-style="ctrl.blockAnimations && ctrl.noTransitions" class="subtitles-overlap hidden" style="transition: unset;"> <!----> <!----><div ng-if="ctrl.currentFeedItemType === ctrl.FeedItemType.REALTIME"> 2022/03/07~現在 </div><!----> </div> </div> </div> <div ng-class="ctrl.showItemHeaderElements ? 'visible': 'hidden'" class="visible"> <!----><ng-include src="'/components/feed/feed-item-directive/feed-item-sparkline-or-search-count.html'"><!----><sparkline ng-if="storyId" service-bind="ctrl.sparklineService.getSparkline(storyId)" thickness="2" width="88" height="29" draw-area="false"><!----><div class="sparkline-chart" ng-if="width && height && svgPath" style=""> <svg ng-attr-width="{{ width }}" ng-attr-height="{{ height }}" viewBox="0 0 200 100" preserveAspectRatio="none" width="88" height="29"> <g fill="transparent"> <!-- Line path. --> <path ng-attr-d="M{{ ::svgPath }}" ng-attr-stroke-width="{{ thickness }}" stroke="#4284f3" vector-effect="non-scaling-stroke" d="M0,100L8.695652173913043,100L17.391304347826086,100L26.08695652173913,100L34.78260869565217,100L43.47826086956522,100L52.17391304347826,100L60.86956521739131,100L69.56521739130434,100L78.26086956521739,100L86.95652173913044,100L95.65217391304348,99L104.34782608695652,100L113.04347826086956,100L121.73913043478262,100L130.43478260869566,100L139.1304347826087,99L147.82608695652172,100L156.52173913043478,99L165.2173913043478,69L173.91304347826087,64L182.6086956521739,21L191.30434782608697,0L200,1" stroke-width="2"></path> <!-- Area path. --> <!----> </g> </svg> </div><!----> <!----><ng-transclude ng-if="width && height && svgPath" class="" style=""> <p class="sparkline-text"> 過去 24 時間 </p> </ng-transclude><!----> </sparkline><!----> <!----> </ng-include> </div> </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/10 06:59
2022/03/10 07:00
2022/03/10 07:01
2022/03/10 10:39