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

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

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

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. 。  

相关文章:

  • 2022-12-23
  • 2021-07-13
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-21
  • 2021-08-07
  • 2022-12-23
  • 2021-10-16
  • 2021-09-30
  • 2021-05-24
相关资源
相似解决方案