BeautifulSoup 提取某个tag标签里面的内容

用的版本是BeautifulSoup4,用起来的确要比 re 好用一些,不用一个个的去写正则表达式,这样还是挺方便的。

比如我要获取高匿代理IP页面上的IP和端口,网址这里:点击打开链接,它的组织方式是这样的,如下图:


IP和端口 tr.td 标签里面,tr有class属性,属性有两种情况的值,对于这点我们可以用正则表达式来匹配下。当提取某一个标签里的具体内容时,可以用bs的 .string属性,注意:用 .string 属性来提取标签里的内容时,该标签应该是只有单个节点的。比如上面的 td 标签那样。下面直接上代码了。

[python]  view plain  copy
  1. import requests  
  2. from bs4 import BeautifulSoup  
  3. import re  
  4. import os.path  
  5.   
  6. user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5)'  
  7. headers = {'User-Agent': user_agent}  
  8.   
  9. session = requests.session()  
  10. page = session.get("http://www.xicidaili.com/nn/1", headers=headers)  
  11. soup = BeautifulSoup(page.text,'lxml')  #这里没有装lxml的话,把它去掉用默认的就好  
  12.   
  13. #匹配带有class属性的tr标签  
  14. taglist = soup.find_all('tr', attrs={'class': re.compile("(odd)|()")})  
  15. for trtag in taglist:  
  16.     tdlist = trtag.find_all('td')  #在每个tr标签下,查找所有的td标签  
  17.     print tdlist[1].string   #这里提取IP值  
  18.     print tdlist[2].string   #这里提取端口值  

结果如下:

[python]  view plain  copy
  1. 124.88.67.24  
  2. 80  
  3. 61.224.239.71  
  4. 8080  
  5. 113.3.78.124  
  6. 8118  
  7. 61.227.228.141  
  8. 8080  
  9. 222.130.171.58  
  10. 8118  
  11. 123.57.190.51  
  12. 7777  
  13. 183.61.71.112  
  14. 8888  
  15. 120.25.171.183  
  16. 8080  
  17. 1.164.146.91  
  18. 8080  
  19. 101.201.235.141  
  20. 8000  
  21. 121.193.143.249  
  22. 80  
  23. 118.180.15.152  
  24. 8102  
  25. 124.88.67.19  
  26. 80  
  27. 。  
  28. 。  
  29. 。  
  30. 。  
  31. 。  
  32. 。  
  33. 。  
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值