1.前言
爬虫真的难!
2.学习内容
2.1图片数据爬取
#需求:爬取糗事百科中糗图板块下所有的糗图图片 import requests if __name__ == '__main__': #如何爬取图片数据 url='https://pic.qiushibaike.com/system/pictures/12487/124871233/medium/VZ7XN8XIPCOGTQVT.jpg' # .content返回的是二进制图片数据 (图片是二进制) #text返回的是字符串形式的图片数据,content是二进制 json()返回的是对象类型的数据 img_data=requests.get(url=url).content with open('.qiutu.jpg','wb') as fp: fp.write(img_data)
2.2正则案例解析
import requests import re import os if __name__ == '__main__': #创建一个文件夹用来保存所有图片 if not os.path.exists('.qiutuLibs'): os.mkdir('qiutuLibs') url='https://www.qiushibaike.com/imgrank/' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3877.400 QQBrowser/10.8.4508.400' } #使用通用爬虫对url对应的一整张页面进行爬取 page_text=requests.get(url=url,headers=headers).text#什么时候用post,什么时候用get?看抓包工具里的Request Method #使用聚焦爬虫将页面中所有的糗图进行提取 #< div class ="thumb" > #< a href = "/article/124878565" target = "_blank" > #< img src = "//pic.qiushibaike.com/system/pictures/12487/124878565/medium/N81D0YEUYNJ0PS3G.jpg" alt = "糗事#124878565"class ="illustration" width="100%" height="auto" > #< / a > #< / div > ex='<div class="thumb">.*?<img src=''(.*?)'' alt.*?</div>'#? img_src_list=re.findall(ex,page_text,re.S)#re.S叫做单行匹配 re.M叫做多行匹配 #print(img_src_list)#一开始输出的空列表,后来换个headers解决了 for src in img_src_list: #拼接出完整的图片地址 src='https:'+src #请求到了图片二进制数据 img_data=requests.get(url=src,headers=headers).content #生成图片 img_name=src.split('/')[-1]#-1就是倒数第一,也就是最后一个值 #图片存储的路径 img_Path='./qiutuLibs/'+img_name with open(img_Path,'wb') as fp: fp.write(img_data) print(img_name,'下载成功!!!!!')
这个程序是爬取糗图百科里面的热图板块第一页的所有图片,但是提示我
raise InvalidURL("Invalid URL %r: No host supplied" % url) requests.exceptions.InvalidURL: Invalid URL 'https:"//pic.qiushibaike.com/system/pictures/12487/124879328/medium/DG93LEKNXNAQAKFQ.jpg"': No host supplied
3.结束语
每天进度太慢了,主要是跟着老师的程序敲都做不出来,其实也正常!