嗨害大家好鸭!我是爱摸鱼的芝士❤
这次给大家带来的是模块+实战
以便大家理解学习
觉得写的好的话,可以给我多多点赞鸭~
Python 内置了 requests
模块,
该模块主要用来发 送 HTTP 请求,
requests
模块比 urllib
模块更简洁。
实例
# 导入 requests 包
import requests
# 发送请求
x = requests.get('这里放网址')
# 返回网页内容
print(x.text)
每次调用 requests
请求之后,
会返回一个 response
对象,
该对象包含了具体的响应信息。
实例
# 导入 requests 包
import requests
# 返回 http 的状态码
print(x.status_code)
# 响应状态的描述
print(x.reason)
# 返回编码
print(x.apparent_encoding)
输出结果如下:
200
OK
utf-8
请求 json
数据文件,
返回 json
内容:
实例
# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://网站网址/try/ajax/json_demo.json')
# 返回 json 数据
print(x.json())
requests
方法如下表:
使用 requests.request()
发送 get 请求:
实例
# 导入 requests 包
import requests
# 发送请求
x = requests.request('get', 'https://网址/')
# 返回网页内容
print(x.status_code)
输出结果如下:
200
设置请求头:
实例
# 导入 requests 包
import requests
kw = {'s':'python 教程'}
# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("这里放网址", params = kw, headers = headers)
# 查看响应状态码
print (response.status_code)
# 查看响应头部字符编码
print (response.encoding)
# 查看完整url地址
print (response.url)
# 查看响应内容,response.text 返回的是Unicode格式的数据
print(response.text)
输出结果如下:
200
UTF-8
这里是网址?s=python+%E6%95%99%E7%A8%8B
... 其他内容...
纸上得来终觉浅,绝知此事要躬行
接下来就来案例实战吧
这次的网站如下图:
本次采集的目标是:
将这个网站的官方漫画采集下来
为什么要打码呢?
因为不打码就过不辽审核…
import requests
import re
def get_response(html_url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari'
}
response = requests.get(url=html_url, headers=headers)
return response
def get_chapter(html_url):
html_data = get_response(html_url).text
chapter_list = re.findall('"(\d+)","第.*?话', html_data)
return chapter_list
def get_img_info(chapter_id):
link = f'F12开发者工具获取'
chapter_text = get_response(html_url=link).text
img_list = re.findall(', chapter_text)
title = re.findall('false,"(.*?)"', chapter_text)[0]
return img_list, title
def save(img, file):
img_content = get_response(img).content
with open(file, mode='wb') as f:
f.write(img_content)
print(img)
夹带私货,截取一下海哥全脸哈哈哈
可能会有人问我为什么不直接去官网上一章章看…
首先,这是一个锻炼项目,
目的是自己对requests模块的熟练程度进行加深;
其次,我真的很懒,
一次性全下载下来就很方便
万一想用手机看,
想看就马上看了鸭,
就没那么麻烦了(懒)
最后,是自己看,自己用,公开数据
总有那么些人总要杠我一下,
一次性说清楚用法用途,真的不理解意思就算了。
不管你是想磨练自己的技术还是想赚外包,
别触犯法律、别伤害他人就行。
更多更有趣野生的python知识,
可以关注公众号❤:python小熊猫