鱼C论坛

 找回密码
 立即注册
查看: 17169|回复: 10

[已解决]爬虫问题表达式

[复制链接]
发表于 2019-9-22 15:26:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 20192019 于 2019-9-22 15:31 编辑

<a href="http://www.qydaili.com/" target="_blank" data-type="img"><img src="img/hgg.png"></a><br><script type="text/javascript" src="js/jquery.min.js"></script>
<div id="adarea"onclick=location.href='http://www.qydaili.com/' style="cursor: pointer;display: none;position: fixed;right:15px;bottom:15px;width: 285px;height: 250px;background: url(/img/fkgg.png) no-repeat;">
<div id="adclose" style="cursor: pointer; position: absolute;  top: 0px;  right: 0px;  display: block;  width: 20px;  height: 20px;font-family: cursive;background: url(img/close.png) no-repeat;" title="点击关闭"> </div>
</div>
<script type="text/javascript">
$(function(){
$('#adarea').slideDown(500);
$('#adclose').click(function(){
$('#adarea').slideUp(500);
});
});
</script>我只想要下面的ip怎么搞?

176.235.80.103:9090<br>177.125.243.12:3128<br>62.151.243.205:8080<br>188.17.148.31:36080<br>118.97.180.132:30793<br>77.38.21.239:8080<br>41.77.23.221:41049<br>117.197.116.89:8080<br>118.174.234.195:52236<br>130.117.173.182:60078<br>高效高匿名代理IP提取地址:http://www.qydaili.com/

我的代码:
import urllib.request
import re
url='http://www.89ip.cn/tqdl.html?api=1&num=10'

na=urllib.request.urlopen(url).read().decode('utf-8')
pat='</script>[0-9].*'
name=re.compile(pat,re.S).findall(na)
print(name)

最佳答案
2019-9-22 16:34:41
  1. import re, requests

  2. url = 'http://www.89ip.cn/tqdl.html?api=1&num=10'
  3. html = requests.get(url).text

  4. pat = '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'

  5. name = re.findall(pat, html, re.M)

  6. print(name)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-22 16:34:41 | 显示全部楼层    本楼为最佳答案   
  1. import re, requests

  2. url = 'http://www.89ip.cn/tqdl.html?api=1&num=10'
  3. html = requests.get(url).text

  4. pat = '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'

  5. name = re.findall(pat, html, re.M)

  6. print(name)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-22 16:37:11 | 显示全部楼层
本帖最后由 彩虹七号 于 2019-9-22 16:59 编辑


pat = '((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-22 21:29:45 | 显示全部楼层
彩虹七号 发表于 2019-9-22 16:37
pat = '((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) ...

大佬,你的代码有点高深,能否加个文字说明?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-22 21:57:54 | 显示全部楼层
彩虹七号 发表于 2019-9-22 16:37
pat = '((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) ...

还有端口号,求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-22 22:30:01 | 显示全部楼层

import urllib.request
import re
for i in range(11):
     url='http://www.89ip.cn/tqdl.html?api=1&num=10'

     na=urllib.request.urlopen(url).read().decode('utf-8')
     #pat='''((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))(:\\d.*?<))
     #'''
     pat=';\n</script>.*?([0-9][0-9]|\d.*?)<br>'

     name=re.compile(pat,re.S).findall(na)
     print(name)
看一下能不能改进一下ip和端口都要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-23 00:21:33 | 显示全部楼层

你的代码简单,容易
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-23 00:26:30 | 显示全部楼层
  1. import re
  2. #注:content为源码,结果去除最后一个元素即可
  3. content = content.replace("\n", "")
  4. result = re.sub(r"<a href.*script>","",content).split("<br>")
  5. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-23 00:29:10 | 显示全部楼层

注明:该方法不需要考虑该如何匹配IP的地址,简单易懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-23 00:46:59 | 显示全部楼层

import re

result = re.sub(r"<a href.*script>","",content.replace("\n", "")).split("<br>")[:-1]

print(result)

可以写成一句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-23 08:29:37 | 显示全部楼层
20192019 发表于 2019-9-22 22:30
import urllib.request
import re
for i in range(11):
  1. import re, requests

  2. url = 'http://www.89ip.cn/tqdl.html?api=1&num=10'
  3. html = requests.get(url).text
  4. print(html)
  5. pat = '(\d+\.\d+\.\d+\.\d+\:\d+)'
  6. name = re.findall(pat, html, re.M)
  7. print(name)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 13:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表