注:文章末尾会放出 爬虫的代码
月光社是一个优质的崩坏3辅助社区
其中 圣痕系统 是该网站中爬虫技术含量最低的页面(我是这么觉得的)

所以我们要先知道每个圣痕组的 id
所以先使用requests库访问月光社圣痕系统的主页面:http://www.3rdguide.com/web/stig/index
然后根据源码编写正则表达式:’’

为了方便书写,我先定义个请求的方法

import requestsdef Request(url):                #由于后续需要多次用到类似请求,所以为了方便,就构建成方法head = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'}while True:try:           response = requests.get(url,headers = head)except:print('出错啦')else:if response.status_code == 200:        #判断请求状态是不是200return response                    #返回结果  结束函数breakelse:print('连接错误:'+str(response.status_code))    #链接出错提示,并重新开始循环

随后我都使用Request()函数来请求网页

url = 'http://www.3rdguide.com/web/stig/index'
response = Request(url)
stig_id_list = re.findall('<a href="/web/stig/(.*?)" >',response.text)       #stig_url_list储存正则表达式匹配到符合的字符串(注:是列表形式  list)

这样每个圣痕组对应的id就储存在列表stig_url_list中了

现在每个圣痕组的url都可以知道了,现在接着以符华 戍边为模版分析单个圣痕储存的连接的规律

利用检查功能可以快速在源码中查到与网页元素对应的节点
编写正则表达式匹配字符

img_id = re.findall('<!-- 图片-名称 -->\n                        <img src="//static.3rdguide.com/image/data/uploads/all/(.*?)" alt="">',stig_response.text)   #匹配圣痕的名称(上中下
img_name = re.findall('<p>(.*?) </p>\n                        <!-- 数值 -->',stig_response.text)        #匹配圣痕图片的链接中的标志字符

其中stig_response储存的是圣痕组(例:符华·戍边)网页的源代码

由于正则表达式匹配的字符是用列表的形式储存,所以我用for in 来遍历列表元素,其中使用了zip()函数来将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

for Id,name in zip(img_id,img_name):         #同时遍历两个列表并将他们逐个储存在Id和name中img_url = 'http://static.3rdguide.com/image/data/uploads/all/' + Id    #重构圣痕图片链接

接下来就是关于下载图片的代码了

import osimg = Request(img_url)
if os.path.exists(os.getcwd()+'/Stig'):     #判断该程序目录下是否含有名为 Stig 的文件夹pass
else:os.mkdir(os.getcwd()+'/Stig')          #在该目录下创建名为 Stig 的文件夹
Format = img_url[-4:]                   #判断图片的格式  .jpg 或 .png
open('./Stig/'+name+Format,'wb').write(img.content)     #打开
#open('./Stig/img_url.txt','a+').write(img_url+'    '+name+'\n')       #将图片链接保存下来用于分享
print('保存成功:'+name)            #保存完后提示

我这是拆分结构进行讲解,使用时每个片段间要注意缩进

接下来放合并的代码

import requests
import re
import osdef Request(url):                #由于后续需要多次用到类似请求,所以为了方便,就构建成方法head = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'}while True:try:           response = requests.get(url,headers = head)except:print('出错啦')else:if response.status_code == 200:        #判断请求状态是不是200return response                    #返回结果  结束函数breakelse:print('连接错误:'+str(response.status_code))    #链接出错提示,并重新开始循环def stig():head = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400'}     #请求头url = 'http://www.3rdguide.com/web/stig/index'                    response = Request(url)stig_id_list = re.findall('<a href="/web/stig/(.*?)" >',response.text)       #stig_url_list储存正则表达式匹配到符合的字符串(注:是列表形式  list)for Id in stig_url_list:          #遍历stig_url_list列表,并储存在stig_url变量中stig_url = 'http://www.3rdguide.com/web/stig/' + Id     #重新构建urlstig_response = Request(stig_url)            #访问单组圣痕(通常为上,中,下),圣痕的图片是在stig_url储存的链接中加载img_id = re.findall('<!-- 图片-名称 -->\n                        <img src="//static.3rdguide.com/image/data/uploads/all/(.*?)" alt="">',stig_response.text)   #匹配圣痕的名称(上中下)img_name = re.findall('<p>(.*?) </p>\n                        <!-- 数值 -->',stig_response.text)        #匹配圣痕图片的链接中的标志字符for Id,name in zip(img_id,img_name):         #同时遍历两个列表并将他们逐个储存在Id和name中img_url = 'http://static.3rdguide.com/image/data/uploads/all/' + Id    #重构圣痕图片链接img = Request(img_url)        if os.path.exists(os.getcwd()+'/Stig'):     #判断该程序目录下是否含有名为 Stig 的文件夹passelse:os.mkdir(os.getcwd()+'/Stig')          #在该目录下创建名为 Stig 的文件夹Format = img_url[-4:]                   #判断图片的格式  .jpg 或 .pngopen('./Stig/'+name+Format,'wb').write(img.content)     #用二进制方式打开图片文件,将图片链接中的源码以二进制形式写入图片文件#open('./Stig/img_url.txt','a+').write(img_url+'    '+name+'\n')       #将图片链接保存下来用于分享print('保存成功:'+name)            #保存完后提示def main():    #函数入口stig()if __name__ == '__main__':    main()

文章到这里就结束了,如果对我写的代码有疑问的可以在评论中提出来

对爬虫感兴趣的可以去尝试一下,我是认为这个网站的难度其实不高

但是 月光社 武器大全 使用的技术就会高大上些,使用了ajax技术,感兴趣的可以去搞一波(滑稽),下一篇我也会讲解 武器系统 爬虫方法

时间 2020/2/24

python 爬虫 基础网站相关推荐

  1. python基础代码库-python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' respons ...

  2. python爬虫——基础知识

    python爬虫--基础知识 一.网页基础知识 二.爬虫的思路 1.HTML文档(超文本) 三.ROBOTS协议 四.浏览器发送HTTP请求的过程 1.http请求过程 2.请求 五.SSL连接错误 ...

  3. python爬虫练习网站,墙裂安利这个可以练习爬虫的网站

    python爬虫练习网站,墙裂安利这个可以练习爬虫的网站 今天无意间发现的一个大佬做的网站,http://www.glidedsky.com/,需要注册登录后跟着大佬提供的题目做,刚刚完成了第一个题目 ...

  4. 结构化数据丨Python爬虫基础入门系列(7)

    提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达 文章目录 前言 JSON 1. json.loads() 2. json.dumps() 3. json.dump() 4 ...

  5. python爬虫基础(二)

    文章目录 python爬虫 1.异步爬虫 异步爬虫之多进程and多线程(不建议使用) 异步爬虫之线程池and进程池(适当使用) 单线程+异步协程(推荐) 补充:回调函数 补充:yield 多任务异步协 ...

  6. Python爬虫基础-如何获取网页源代码

    Python爬虫基础-如何获取网页源代码 网络爬虫(Web Crawler),又称网页蜘蛛(Web Spider),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫程序根据一组特定的规则 ...

  7. python 爬虫视频网站

    一 前言 暑假在家,精神状态一直不是很好,闲来无事,便学起了python.借助这一平台,想谈谈自己在学习中的心得与困惑,也算是记录暑期生活的一种方式.从6月底开始自学python爬虫,到今天断断续续学 ...

  8. python爬虫基础-requests库

    python爬虫基础-requests库 python爬虫 1.什么是爬虫? 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程. 注意:浏览器抓取的数据对应的页面是一个完整的页面. 为什 ...

  9. Urllib2库丨Python爬虫基础入门系列(12)

    提示:文末有福利!最新Python爬虫资料/学习指南>>戳我直达 文章目录 前言 Urllib2库 学习目的 urlopen GET请求方式 利用urllib2.Request类,添加He ...

最新文章

  1. 关于学习Python的一点学习总结(45->反运算)
  2. 一些惹起热烈争议的PCB布线经验法则
  3. python编程输入标准-青少年Python编程能力标准等级模拟考试
  4. 深入理解python异步编程_深入理解Python异步编程
  5. 科学的分析猪八戒到底是什么猪,黑猪还是白猪?
  6. 架构中的设计原则之单一职责原则 - 《java开发技术-在架构中体验设计模式和算法之美》...
  7. pclint 与vs2010结合识别预处理器定义
  8. 数据库连接池的实现方法(MySQL+C++)
  9. 界面开发用qt还是java,做windows界面,用QT还是MFC?
  10. vue分享给QQ好友,QQ空间,微博
  11. 设计方案,写了才知道有多香
  12. FlinkSql系列6之 Interval Join
  13. bootmgr快速修复win7_「科普」UEFI+GPT、Legacy+MBR引导模式介绍 引导修复
  14. hong书网页版x-s、x-t
  15. 微前端:使用qiankun框架的注意点
  16. python怎么将字符串逆序_python中如何把一个字符串顺序逆序反转的几种方法?
  17. 【BAT-表姐御用04ren进阶命令】文件数字顺序命名及改名(含命令解释)
  18. STC89C52通过寄存器点亮一个LED
  19. 彩虹网盘外链程序源码V5.1
  20. 实诚!大义灭亲!360安全卫士证明360安全卫士是木马

热门文章

  1. 阿里云服务器IIS网站快照被入侵导致违规URL通知
  2. 场景应用:小而美,才是未来的营销世界
  3. IM即使通讯 一篇文章足够了
  4. Matlab 图像分割 (阈值处理)
  5. 国内钢材现货震荡整理
  6. 洛谷P1164小A点菜
  7. 红帽linux挂载光驱,redhat 6及centos5.6加载光驱并设置更新源yum
  8. 电子行业激光雷达观察报告之Luminar篇:1550nm追风者-220424
  9. ActionScript 读写文件
  10. tzoj 5785: 打击犯罪