文章目录
- 一、requests_html 基本介绍
- 二、requests_html 基本使用
- 三、发送带有参数的请求
- 四、图片抓取实战案例
一、requests_html 基本介绍
A、装库: pip install requests_html
B、介绍: requests 和 requests_html 是同一个作者
二、requests_html 基本使用
A、导包: from requests_html import HTMLSession
B、使用: session = HTMLSession()
三、发送带有参数的请求
params = {
}
requests.get(url, params=params)
四、图片抓取实战案例
案例实战:使用requests_html库抓取图片
部分效果如图所示:
附上部分代码如下:
import os
from requests_html import HTMLSession
class BdtpSpider(object):
def __init__(self):
'''
1、初始化部分
'''
self.keyword = '风景'
self.session = HTMLSession()
self.start_url = ''
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}
def confrim_params(self):
'''
2、确认请求参数
'''
for index in range(1, 2):
print('\n' + '-------------正在下载: 第{}页-------------'.format(index) + '\n')
params = {
}
self.requests_start_url(params)
def requests_start_url(self, params):
'''
3、请求起始地址
'''
response = self.session.get(self.start_url, params=params, headers=self.headers).json()
self.parse_resposne(response)
def parse_resposne(self, response):
'''
4、解析图片名字, 图片地址
'''
for data_info in response['data'][0: -1]:
img_name = data_info['fromPageTitleEnc']
img_name = img_name.replace('?', '').replace(' ', '').replace(',', '').replace(':', '')
img_url = data_info['middleURL']
self.requests_img_url(img_name, img_url)
def requests_img_url(self, img_name, img_url):
'''
5、请求获取图片二进制
'''
img_content = self.session.get(img_url).content
self.create_dir(img_name, img_content)
def create_dir(self, img_name, img_content):
'''
6、创建文件夹
'''
if not os.path.exists('{}'.format(self.keyword)):
os.mkdir('{}'.format(self.keyword))
self.save_data(img_name, img_content)
def save_data(self, img_name, img_content):
'''
7、保存数据
'''
try:
with open('{}/{}.jpg'.format(self.keyword, img_name), 'wb') as f:
f.write(img_content)
print('下载完成: {}.jpg'.format(img_name))
except Exception as e:
print('下载失败: {}.jpg'.format(img_name))
def main(self):
'''
逻辑控制部分
'''
self.confrim_params()
if __name__ == '__main__':
bdtp = BdtpSpider()
bdtp.main()