|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在爬取网页的时候遇到这样的情况
- <tbody>
- <tr>
- <td class="td1"><a href="//q.stock.sohu.com/cn/dxph_sy.shtml" target=_blank>每股收益</a></td>
- <td class="td2">0.73</td>
- <td class="td3 red">10.71</td>
- <td class="td4 green">-123.70</td>
- </tr>
- <tr>
- <td class="td1"><a href="//q.stock.sohu.com/cn/dxph_jzc.shtml" target=_blank>每股净资产</a></td>
- <td class="td2">5.12</td>
- <td class="td3 green">-44.99</td>
- <td class="td4 ">-</td>
- </tr>
复制代码
这里有两个<tr>标签 我现在想要爬取的是<td class="td2">0.73</td> 中0.73的那个数字,也就是每股收益 但是有class = 'td2'属性的td标签相当多,如果直接爬会导致不知道目标的数值在哪里,但如果根据 每股收益 这个 内容爬,又爬到的是<td class="td1"><a href="//q.stock.sohu.com/cn/dxph_sy.shtml" target=_blank>每股收益</a></td>这个标签,请问如何解决?
我的解决方案特别复杂。。。。希望找个简单的
我自己代码如下
- import requests, openpyxl
- from bs4 import BeautifulSoup
- def has_id(tag):
- if '每股收益' in tag.stripped_strings:
- return True
- else:
- return False
- url = 'http://q.stock.sohu.com/cn/002737/index.shtml'
- r = requests.get(url,headers=headers)
- r.encoding = 'gbk'
- soup = BeautifulSoup(r.text,'lxml')
- tags = soup.find_all('tr')
- for tr in tags:
- tag = tr.find(has_id)
- if tag:
- per_earning =tag.parent.find(class_='td2').string
- break
复制代码
xpath多简单//tr/td[@class="td2"][2]
|
|