|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
挖坑:为什么pos2处的正则表达式有些IP最后一位会漏匹配?
为什么pos3处抛开?:不谈,[\n]+?匹配不到但是[\s]+?却匹配到了,不是很理解,这两个不是应该同一个意思吗?
脱坑(现阶段理解):pos3处难道目标两行中间不仅仅是换行符还有空格?(目标源代码范例如下)
- <tr class="odd">
- <td class="country"><img src="http://fs.xicidaili.com/images/flag/cn.png" alt="Cn" /></td>
- <td>114.230.41.126</td>
- <td>808</td>
- <td>江苏扬州</td>
- <td class="country">高匿</td>
- <td>HTTPS</td>
- <td>308天</td>
- <td>1分钟前</td>
- </tr>
复制代码
类似坑:暂无
import requests
import os
import re
import time
import random
def url_open(url):
header = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
}
response = requests.get(url,headers = header)
return response
def find_imgs(url):
html = url_open(url).text #html.text是requests模块里面的获取响应网站的文本文件(自动解码)
#print(html)
#p = r'<td>((?:(?:[01]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d?\d|2[0-4]\d|25[0-5]))</td>\s' #pos1配合下面zip用于单抓IP,没有端口
#p = r'(?:(?:[01]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d?\d|2[0-4]\d|25[0-5])' #pos2有时候最后IP最后一位会漏一个数字,原因未知
p = r'<td>((?:(?:[01]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d?\d|2[0-4]\d|25[0-5]))</td>[\s]+?<td>(\d{2,6})</td>'
#p = r'<td>(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])</td>[\n]+?<td>\d{1,4}</td>' #pos3论坛塔利班,抓不到
j = r'<td>(\d{2,6})</td>'
img_addrs = re.findall(p,html)
img_addrsj = re.findall(j,html)
for each in img_addrs:
print(each)
#print(img_addrs)
#print(img_addrsj)
''' for each in zip(img_addrs,img_addrsj):
print(each)'''
if __name__ == '__main__':
url = 'http://www.xicidaili.com/'
find_imgs(url)
的确是,目标代码换行后还有空格缩进, 
|
|