应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而本渣渣这里是采集保存到本地,所有,一些保存的数据需要二次格式化处理!

爬取链接:https://www.g-mark.org/activity/2020/best100.html

第三方库:requests,fake_useragent,lxml

爬取关键点

1.requests访问超时重试的应用

访问超时重试,requests已经打包好,可以直接调用,很方便!

from requests.adapters import HTTPAdapters = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=3))
s.mount('https://', HTTPAdapter(max_retries=3))

2.xpaht 关键节点获取数据

  • 链接节点

 urllists=req.xpath('//ul[@class="itemList listB2"]/li/a/@href')
  • 信息节点

basicinfos=req.xpath('//dl[@class="basicinfo"]//text()')

这里“//”,代表获取该节点元素下所有的数据内容!

  • 图片节点

photos=req.xpath('//ul[@class="photo"]/li/a/img/@src')

3.数据格式化处理

  • 网址拼接

parse_url='https://www.g-mark.org{}'.format(url)
  • 数据过滤,整理

for basicinfo in basicinfos:if basicinfo != '\r\n\t\t\t':information=f'{information}:{basicinfo}'

过滤空白字符,整合拼接需要的字符内容数据,想要更加精细化数据,建议一个节点一个节点获取内容!

  • 图片数据格式化处理

img_url=photo.split('?w')[0]
img_name=img_url[-24:]
print(img_url,img_name)

图片数据格式化,这里本渣渣指的是,图片链接及图片名的格式化处理,为下一步图片的下载及图片数据的保存做准备,这里需要结合实际情况进行处理,这里应用了切片处理及split函数!

4.访问超时出错的处理

访问超时出错,try-except,直接将出错的数据保存到本地txt中,方便数据补坑操作调用,这里没有保存到数据库,应该还是存储到数据库更加方便,大家看着操作吧!

  • 链接访问超时出错处理

try:self.parse(parse_url,x)
except Exception as e:print(f"访问页面出错,错误代码:{e}")with open(f'fail_url.txt','a+') as f:f.write(f'{parse_url}-{x}\n')
  • 图片下载超时出错处理

def dowm_img(img_url, img_name,x,y):try:r = self.s.get(img_url, headers=self.headers, timeout=10)with open(f'{x}_{y}_{img_name}', 'wb') as f:f.write(r.content)print(f"下载 {x}_{y}_{img_name} 图片成功")except Exception as e:print(f"下载图片出错,错误代码:{e}")with open(f'fail_img.txt', 'a+') as f:f.write(f'{img_url}-{x}_{y}_{img_name}\n')

5.数据补坑操作

出错数据记录,这里本渣渣用了“-”作为间隔存储数据,但是本身网站链接就有“-”字符,所以也算是自己给自己挖坑,在数据读取后,数据格式化处理费了点功夫,这类失误应该尽量避免!

  • 出错数据读取

path=r'b\fail_img.txt'
with open(path,'r') as f:img_datas=f.readlines()print(len(img_datas))
  • 数据处理

img_data=img_data.split()[0]
img_url=f"{img_data.split('-')[0]}-{img_data.split('-')[1]}"
img_names=img_data.split('-')[2]
x=img_names.split("_")[0]
y=img_names.split("_")[1]
img_name=img_names[-24:]
print(img_url,img_name,x,y)
  • 函数调用

数据补坑,直接调用写好的类,初始化操作,直接调用相关的函数,爽歪歪!

from gm import Gmark
spider=Gmark() #初始化类
spider.dowm_img(img_url,img_name,x,y) #图片下载函数调用
spider.parse(url, x) #链接爬取函数调用

以上都是渣渣瞎bb,仅供参考!

完整源码获取

关注本渣渣微信公众号:二爷记

后台回复:g-mark

相关阅读:

类及数据库的应用,G-MARK网站数据Python爬虫系统的构建

一脸蒙蔽,

对比以前写的,

怎么感觉代码越写越渣了?!

python爬虫,g-mark网站图片数据爬取及补坑相关推荐

  1. Python爬虫《自动化学报》数据爬取与数据分析

    Python爬虫<自动化学报>数据爬取与数据分析 文章目录 Python爬虫<自动化学报>数据爬取与数据分析 前言 一.代码 二.结果展示 三.爬虫实现 1.准备 2.获取网页 ...

  2. Python爬虫-CSDN博客排行榜数据爬取

    文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 开始接触 CTF 网络安全比赛发现不会写 Python 脚本的话简直寸步难行--故丢弃 ...

  3. (python爬虫)新浪新闻数据爬取与清洗+新浪新闻数据管理系统+MySQL

    新浪新闻数据爬取与清洗+新浪新闻数据管理系统 设计要求 新浪新闻数据爬取与清洗 基本要求:完成新浪新闻排行中文章的数据爬取,包括标题.媒体.时间.内容. 进阶要求:对最近一周出现次数最多的关键字排名并 ...

  4. python爬虫网页中的图片_Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片http://pic.s ...

  5. Python爬虫实习笔记 | Week4 项目数据爬取与反思

    2018/11/05 1.所思所想: 今天我把Python爬虫实战这本书Chapter6看完,很有感触的一点是,书本中对爬虫实现的模块化设计很给我灵感,让我对项目中比较无语的函数拼接有了解决之道,内省 ...

  6. python爬虫多久能学会-不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据...

    原标题:不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方 ...

  7. python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程

    爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...

  8. 基于python爬虫————静态页面和动态页面爬取

    基于python爬虫----静态页面和动态页面爬取 文章目录 基于python爬虫----静态页面和动态页面爬取 1. 爬虫的原理 2. 用正则表达式匹配获取数据 3. 页面源码解析 4. 通过req ...

  9. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

    Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...

最新文章

  1. 单行文字压缩处理(要指定字体)
  2. EOS 源代码解读 (4)交易数据结构
  3. CodeForces - 570E(dp------------- Codeforces Round #316 (Div. 2)E
  4. 201671030107胡文艳实验三作业互评与改进报告
  5. Liferay 部署war包时候的deployDirectory 细节分析
  6. rails 共享变量_如何将Rails实例变量传递给Vue组件
  7. 求单链表结点的阶乘和
  8. 浅谈String str = 和 new String()的区别
  9. 贪心算法之加勒比海盗问题
  10. python如何跳出函数_python如何跳出函数
  11. OpenCV阈值分割
  12. Xutils-Android中数据存储和网络传输的框架
  13. 2020 年软件设计师考试上午真题
  14. Python 针对Excel操作
  15. PLM系统的经济收益
  16. 分享电脑中截图的五种方法(包括截长图)
  17. 不知道CAD坐标系,如何做到CAD与卫星影像无偏叠加?
  18. ubuntu格式化硬盘
  19. 2021消防设施操作员(初级)岗位考试模拟题库燃烧基础部分
  20. 机器学习(十六)推荐系统

热门文章

  1. 四款好用的在线表单工具盘点
  2. 设置vscode默认打开浏览器为谷歌
  3. 怎么将mov格式的视频转换成MP4?
  4. 大牛证券:涪陵榨菜Q2单季营收增速创近六年新低
  5. 服务器如何预防入侵问题
  6. Revit中项目特别大如何将项目完整的体现在图纸中?
  7. ubuntu12.04 GX编译环境搭建
  8. 【CV学习笔记】图像预处理warpaffine
  9. iOS开发中解决第三方静态库符号冲突的终极方案
  10. 三年初心不改,iQOO如何树立电竞旗舰新标杆?