python爬虫简单爬取

最近学习了爬虫,朋友说想看看关于cos的美图,好巧不巧找到了一个好的网站,废话不多说,下面就帮朋友拿图片。

基于基础爬虫

目标网站http://www.cosplay8.com/pic/chinacos/

首先要知道爬虫的步骤
1.请求
2.解析
3.保存

  • 基本思路
    首先请求
import requests
import reheader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 ''Safari/537.36 Edg/110.0.1587.41 '
}def html_all_page(url):html = requests.get(url, headers=header)html.encoding = 'utf-8'data = re.findall('<li><a href="(.*?)">', html.text)  # 找出网页所有链接for i in range(1, 2):  # 网页翻页url = f'http://www.cosplay8.com/pic/chinacos/list_22_{i}.html'html_all_page(url)

这里注意网页的第一页链接为http://www.cosplay8.com/pic/chinacos/
第二页链接为 http://www.cosplay8.com/pic/chinacos/list_22_2.html
但 http://www.cosplay8.com/pic/chinacos/list_22_1.html 这样写也可以到第一页,而有些网站不行

进入网页F12发现,每个链接只有后缀,所以我们要加上前缀

import osfor url in data:url_data = 'http://www.cosplay8.com' + url  # 合并链接url2 = requests.get(url_data, headers=header)  # 合并后的链接,再次请求每个链接url2.encoding = 'utf-8'# print(url2.text)url_page = re.findall('var totalpage = (.*?);', url2.text)  # 获得图片的页数img_name = re.findall('<title>(.*?)-Cosplay中国</title>', url2.text)  # 获得图片的名字for img_name in img_name: # 创建图片对应的文件夹if not os.path.exists('cosplay8\\' + img_name):os.mkdir('cosplay8\\' + img_name)print(img_name)# 这里和的后缀和上面的不一样,第一页不是为1for i in range(int(url_page[0])): # 生成图片每一页链接page = url_data.split('.html')[0] + f'_{i + 1}.html'.replace('_1.', '.')  print(page)img_save(img_name, page)

结果如下,24页对上了

刚好24页

  • 然后就可以解析图片保存了
def img_save(img_name, page):img_get_all = requests.get(page, headers=header)  # 请求每一个图片链接img_get_all.encoding = 'utf-8'img = re.findall('把href里的(.*?)链接改为', img_get_all.text)  # 获得图片for img in img:img = 'http://www.cosplay8.com' + img  # 合并图片链接img_data_name = img.split('/')[-1]  # 保存图片的后缀名img_data = requests.get(img).content  # 获得图片数据with open('cosplay8\\' + img_name + '/' + img_data_name, 'wb')as f: # 保存f.write(img_data)print(img, '完成')f.close()
  • 最后结果

  • 总结
    1.爬虫的思路要从小到大,从少到多。
    2.解析数据没有数据时到请求到的数据里解析,而不是网页上的数据
    3.保存数据图片用的后缀名不能一样,不然会一直覆盖保存
    仅供学习参考
    如有不足,请多指教

完整代码

import requests
import re
import osheader = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 ''Safari/537.36 Edg/110.0.1587.41 '
}def html_all_page(url):html = requests.get(url, headers=header)html.encoding = 'utf-8'data = re.findall('<li><a href="(.*?)">', html.text)  # 找出网页所有链接for url in data:url_data = 'http://www.cosplay8.com' + url  # 合并链接url2 = requests.get(url_data, headers=header)  # 合并后的链接,再次请求每个链接url2.encoding = 'utf-8'# print(url2.text)url_page = re.findall('var totalpage = (.*?);', url2.text)  # 获得图片的页数img_name = re.findall('<title>(.*?)-Cosplay中国</title>', url2.text)  # 获得图片的名字for img_name in img_name:if not os.path.exists('cosplay8\\' + img_name):os.mkdir('cosplay8\\' + img_name)print(img_name)for i in range(int(url_page[0])):page = url_data.split('.html')[0] + f'_{i + 1}.html'.replace('_1.', '.')print(page)img_save(img_name, page)def img_save(img_name, page):img_get_all = requests.get(page, headers=header)  # 请求每一个图片链接img_get_all.encoding = 'utf-8'img = re.findall('把href里的(.*?)链接改为', img_get_all.text)  # 获得图片for img in img:img = 'http://www.cosplay8.com' + img  # 合并图片链接img_data_name = img.split('/')[-1]  # 保存图片的后缀名img_data = requests.get(img).content  # 获得图片数据with open('cosplay8\\' + img_name + '/' + img_data_name, 'wb')as f:  # 保存f.write(img_data)print(img, '完成')f.close()# 'http://www.cosplay8.com//uploads/allimg/230106/112879-230106114420-50.jpg'for i in range(1, 2):url = f'http://www.cosplay8.com/pic/chinacos/list_22_{i}.html'html_all_page(url)

Cosplay美图爬取相关推荐

  1. 最新的今日头条美图爬取(这真是一篇很烂的博客)

    接下来我们就介绍一下对今日头条的爬取: 对AJAX的爬取我也不是太熟,但是我想了以下这应该是最新的了,我也在网上搜索到不少今日头条的爬去,但是跟新过后就很难找到能顺利爬取美图的博客了,所以我把我的发现 ...

  2. 【python】数据分析绘制疫情图(爬取数据+保存Excel+echart绘制地图)

    数据分析师工作中常规流程一般是:数据获取.数据处理.数据分析展示等. 本篇通过国内疫情数据实现数据从爬取到展示的过程. 介绍 py版本:python 3.8 目标绘制全国疫情图. 思路 通过以下三个方 ...

  3. Selenium实例2-截图爬取漫画

    整体思路分三步: 模拟浏览器–>截取浏览器当前屏幕–>保存漫画截图 目标网址 http://www.1kkk.com/ch1000-514226/ (1)获取浏览器(模拟浏览器) def ...

  4. python bing 风景图爬取

    说明:个人因项目需要风景图数据集而写,仅供参考. 配置:ubuntu20.firefox.pycharm.requests.BeautifulSoup 步骤: 1.bing搜索"风景图&qu ...

  5. Scrapy爬取整个美女网爬下来,要多少有多少

    都2021年了还没爬过大家喜欢的美女图片,上先爬取的成果. 简介 基于Scrapy框架的 美女网爬取 爬虫入口地址:http://www.meinv.hk/?cat=2 如果你的爬虫运行正常却没有数据 ...

  6. 100行代码教你爬取斗图网(Python多线程队列)

    100行代码教你爬取斗图网(Python多线程队列) 前言 根据之前写的两篇文章,想必大家对多线程和队列有了一个初步的了解,今天这篇文章就来实战一下,用多线程 + 队列 爬取斗图网的全网图片. 你还在 ...

  7. 养眼神器,爬取美女网站个人的写真套图

    很久之前写的爬虫,一直没有放出来,这次放出来,单线程爬取,又有延时,所以有点慢.不过这也不耽误爬取了一个人的2万多张写真套图,因为这个人的很好看,哈哈哈...不过后来又全都删了,因为又发现了更好的网站 ...

  8. 元旦假期,去哪里旅游好呢?Python爬取元旦旅游最全攻略!

    2020还有最后几天就就结束了,您考虑好2021的第一天去哪里旅游了吗,不如来看看使用Python爬取最全攻略!受益的朋友给个三连. 转发请求声明. 一.实现思路 首先我们爬取的网站是一个穷游网站: ...

  9. selenium爬取Ajax加载的网页(以微博为例)

    Tip:我写了一篇直接构造请求获取微博数据的文章,不使用selenium,直接访问url获取到json数据,然后解析即可得到想要的数据的文章,请参考微博博主动态及相册的请求构造规律 ========= ...

最新文章

  1. c和python的区别动图_C语言与Python 对程序员的差别到底在哪?
  2. JVM 参数使用总结
  3. luoguP5035金坷垃
  4. C++函数编译原理和成员函数的实现
  5. poj 2983 Is the Information Reliable?
  6. (六)洞悉linux下的Netfilteriptables:如何理解连接跟踪机制?(2)
  7. PCA降维算法的原理及应用
  8. proof-carrying data from accumulation schemes学习笔记
  9. 如何把阿拉伯数字转换为中文大写?
  10. 关于整合ssh的问题,新人求关照
  11. 【iOS】关于keyWindow的获取
  12. 一张显卡卖5-6万?Tesla计算卡你凭什么这么贵!
  13. 梦幻手游服务器维护摆摊公示时间,梦幻西游手游摆摊攻略 卖家关注公示期最重要...
  14. 人工智能安全标准化白皮书(2019版)笔记
  15. 英特尔 SST 技术
  16. window系统下nodejs安装及环境配置
  17. 不容错过的华为5G十二大DEMO
  18. 基于SpringBoot框架的管理系统【完整项目源码】
  19. 《UDS/OBD诊断需求编辑工具》总目录
  20. 查询同学选修mysql课程的成绩_mysql-练习题 - osc_wy5qpqnh的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. 上海发文支持NFT 文交所入局:数字藏品趋势已到!
  2. 阿里京东创业者交锋,赋能会是便利店竞争下一程吗?
  3. 微信小程序实现上传视屏并编辑
  4. Java学习(Day 9)
  5. 三星手机又陷“冒烟门”,航班起飞后冒烟;阅文集团IPO融资规模最多达11亿美元丨价值早报
  6. “别人家的公司”!刘强东要给“兄弟们”花60亿建4000套公寓,拎包入住!周边二手房价6万.........
  7. win10家庭中文版 安装 Docker Desktop
  8. 头歌实验 HDFS的基本操作和Java API 操作
  9. pfSense安装视频教程
  10. 大数据面试重点之kafka(六)