聚焦爬虫
流程
- 指定url、
- 发起请求
- 获取响应数据
- 数据解析
- 持久化存储
# -*- coding: UTF-8 -*- import requests import re import os #爬取图片 if __name__=='__main__': url='https://www.qiushibaike.com/imgrank/' #伪装正常用户 headers={ 'referer': 'https://www.qiushibaike.com/imgrank/', 'User-Agent':'Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36' } #创建qiutu_libs文件夹存放图片 if not os.path.exists('./qiutu_libs'): os.mkdir('./qiutu_libs') page_text=requests.get(url=url,headers=headers).text #正则 选取图片地址 ex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>' img_src_list=re.findall(ex,page_text,re.S) #print(img_src_list) #遍历图片,得到图片地址data、为图片命名name、规定存放地址path,写入; for src in img_src_list: src='https:'+src img_data=requests.get(url=src,headers=headers).content img_name=src.split('/')[-1] img_path='./qiutu_libs/'+img_name with open(img_path,'wb') as fp: fp.write(img_data) print(img_name,'ok')
易错点:ex正则书写、img_data定义。
如果网页有多个页码
遍历所有页码的图片
则定义一个url模板进行遍历
# -*- coding: UTF-8 -*-
import requests
import re
import os
#爬取图片
if __name__=='__main__':
#创建qiutu_libs文件夹存放图片
if not os.path.exists('./qiutu_libs'):
os.mkdir('./qiutu_libs')
#伪装正常用户
headers={
'referer': 'https://www.qiushibaike.com/imgrank/',
'User-Agent':'Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
}
#
#设置url模板
url='https://www.qiushibaike.com/imgrank/page%d'
#page_number=2
for page_number in range(1,3):
new_url=format(url%page_number)
page_text=requests.get(url=new_url,headers=headers).text
#正则 选取图片地址
ex='<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
img_src_list=re.findall(ex,page_text,re.S)
#print(img_src_list)
#遍历图片,得到图片地址data、为图片命名name、规定存放地址path,写入;
for src in img_src_list:
src='https:'+src
img_data=requests.get(url=src,headers=headers).content
img_name=src.split('/')[-1]
img_path='./qiutu_libs/'+img_name
with open(img_path,'wb') as fp:
fp.write(img_data)
print(img_name,'ok')