裂缝检测数据集爬取

”明月如霜,好风如水,清景无限 “
最近,因为毕设的临近。更新的很少,不过文远下一篇资料上也差不多都找好了。前天,有位老哥因为毕设要做裂缝检测,但是没裂缝数据。所以叫文远爬一下。文远当然是选择安排了。

百度搜图图片爬取
这个我就不想多说了,毕竟网上一搜一大把,但是综合起来有个要点就是。用旧版本的百度爬取会方便一些,因为旧版百度有页码,可以翻页。但是新版百度是下拉,因此都是动态加载的。

结果
搜索的关键词是裂缝检测。结果后面有很多的垃圾图片(baidu fw)

直接上网址,这个好像没有被墙:

原以为是正常的网站,直接爬:

import requests
# from lxml import etree
import re 
import os
url = "https://www.irit.fr/~Sylvie.Chambon/AigleRN_GT.html"
url = 'https://www.irit.fr/~Sylvie.Chambon/AigleRN_noGT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/ESAR_GT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/ESAR_GT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/LCMS_GT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/LCMS_noGT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/LRIS_GT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/LRIS_noGT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/TEMPEST2_GT.html'
url = 'https://www.irit.fr/~Sylvie.Chambon/TEMPEST2_noGT.html'
​
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',
}
response = requests.get(url=url,headers=headers)
html_text = response.text
# tree = etree.HTML(html_text)
ex = 'SRC=(.*?) NO'
new_url = re.findall(ex,html_text,re.S)
# print(new_url)
len(new_url)

(建议用正则表达式啊,(.*?)经典操作,不多解释啊,自己搜,可以看看前面的文章),小技巧是,输出一下html_text ,帮助更好的写ex.
结果是能得到对应的照片的url,但是不能爬到图片。看原因八成需要cookies.令文远震惊的是,居然没有Cookies参数。看来我只能自建会话Session了。

参数里并没有Cookies参数,无法偷懒。

先保存png对应网址

代码如下:

part = r'https://www.irit.fr/~Sylvie.Chambon/'
for i in new_url:
    img_url = part + i
    file_name = path + r'\new_url.txt'
    with open(file_name,'a+') as f:
        f.write(img_url+'\n')

要注意的地方是,网站的分析。

  • 首先是主页,有五个网址,点进去分别有两种处理的网址,也就是是十个网址。分为_GT和_noGT两个模式。
  • 这十个网址即上面代码的url.除此之外注意照片对应的url不全,缺少
part = r'https://www.irit.fr/~Sylvie.Chambon/'

url残缺如图:

最后也就是代码,正式爬取的代码了:先加载网址列表

new_url = []
with open(r'E:\git_test_ipynb_爬虫\ipynb_爬虫\郑哥\new_url.txt','r',encoding = 'utf-8') as f:
    new_ur = f.readlines()
new_url = []
for i in new_ur:
    new_url.append(i.split('\n')[0])
len(new_url)

正式爬取图片并保存:

import requests
# from lxml import etree
import re 
import os 
path = r'E:\git_test_ipynb_爬虫\ipynb_爬虫\郑哥\pic'
if not  os .path.exists(path):
    os.mkdir(path)
headers = {
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Connection': 'keep-alive',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36',
    'Upgrade-Insecure-Requests': '1'
}
​
A = requests.Session()
A.headers = headers
​
for a,b,c in os.walk(path):
    print('当前路径图片:',c)
    current_num = len(c)
# part = r'https://www.irit.fr/~Sylvie.Chambon/'
for j,i in enumerate(new_url[592:]):
    file_name = path +'\\{}.jpg'.format(current_num + j)
    # print(file_name)
    # print(part+new_url[0])
    # Result = A.get(url = part+new_url[0], timeout = 5, allow_redirects = False)
    response = A.get(url = i,  allow_redirects = False)
    # response=requests.get(url=part+new_url[0],headers=headers)
    img_data=response.content
    # print('print(response.status_code)',response.status_code)
    with open(file_name,'wb') as f:
        f.write(img_data)  
    print("正在爬取。。。。。" +str(current_num + j)+':' + ".....")

一定记得要建立会话Session,即:

A = requests.Session()
A.headers = headers
response  = A.get(url = part+new_url[0], timeout = 5, allow_redirects = False)

效果如下:

总的来说,只要你用浏览器能打开的资源,你要相信可以爬到。
(小技巧:开梯子会下载更快,网站貌似也有反爬,发现爬取变慢,可以停一下,然后更改new_urlfor j,i in enumerate(new_url[592:]):,文远就是592张之后爬取的特变慢,于是改new_url为new_url[592:])如果对你有帮助,请点赞关注星标,代码请点击阅读原文。相关问题可以微信联系文远。再加一个数据集下载地址

END

作者:不爱跑马的影迷不是好程序猿
喜欢的话请关注点赞👇 👇👇 👇

壹句: 没有理想的人不伤心----new pants

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值