鱼C论坛

 找回密码
 立即注册
查看: 3329|回复: 0

[技术交流] 爬贴吧图和爬ip地址(基于小甲鱼老师的代码,和网络资源)

[复制链接]
发表于 2020-12-17 23:34:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Daniel_Zhang 于 2020-12-17 23:37 编辑

爬贴吧图:

  1. import urllib.request as u_request
  2. import re
  3. import ssl

  4. def open_url(url):
  5.     header ={}
  6.     header['User-Agent'] = 'Mozilla/5.0 (Macintosh; M1 Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
  7.     req = u_request.Request(url,headers = header)
  8.     ssl._create_default_https_context = ssl._create_unverified_context        # 似乎现在会出现 urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] 的异常抛出,所以重写了https的默认检验方式
  9.     html = u_request.urlopen(req).read().decode('utf-8')
  10.     return html

  11. def get_img(html):
  12.     p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'        # 个人认为这里可以改成 (jpg|png|jpeg)        正则表达式学的不是太好,献丑了,没遇到其他格式的图片,没机会尝试,不过应该是对哒
  13.     image_list = re.findall(p, html)

  14.     for each in image_list:
  15.         filename = each.split('/')[-1]
  16.         u_request.urlretrieve(each,filename, None)

  17. if __name__ == '__main__':
  18.     url = 'https://tieba.baidu.com/p/6251730285'
  19.     get_img(open_url(url))
复制代码


爬 ip 地址:

  1. import urllib.request as u_request
  2. import re
  3. import ssl

  4. def open_url(url):
  5.     header ={}
  6.     header['User-Agent'] = 'Mozilla/5.0 (Macintosh; M1 Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
  7.     req = u_request.Request(url,headers = header)
  8.     ssl._create_default_https_context = ssl._create_unverified_context
  9.     html = u_request.urlopen(req).read().decode('utf-8')
  10.     return html

  11. def get_ip(html):
  12.     p = r'((?:(?:[0,1]?\d?\d|2[0-4]\d|25[0-5])\.){3}(?:[0,1]?\d?\d|2[0-4]\d|25[0-5]))</td>\n<td>(\d+)</td>'        # 基于小甲鱼老师的基础,增加了端口号的获取,正则表达式学得不好,应该有更优解
  13.     iplist = re.findall(p, html)
  14.     for each in iplist:
  15.         string = each[0] + ':' + each[1]
  16.         print(string)

  17. if __name__ == '__main__':
  18.     url = 'http://cn-proxy.com/archives/218'        # 原来的那个地址被墙了(也没有任何代理ip在页面里显示了),现在这个也被墙了,但是有ip地址和端口号,无特殊手段可能存在无法访问的情况
  19.     get_ip(open_url(url))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 03:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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