IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 爬虫requests实战演练 -> 正文阅读

[Python知识库]爬虫requests实战演练

目录

1.获取百度网页并打印?

2.获取帅哥图片并下载到本地

3.获取美女视频并下载到本地

4.搜狗关键词搜索爬取

5.爬取百度翻译

6.爬取豆瓣电影榜单

7.JK妹子爬取


?1.获取百度网页并打印?

import requests

url="https://www.baidu.com/"
#ua伪装
param={
   ' User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}

response =requests.get(url,params=param)
response.encoding = response.apparent_encoding

print(response.text)

?

其中代码中?response.encoding = response.apparent_encoding

?

encoding是从http中的header中的charset字段中提取的编码方式,若header中没有charset字段则默认为ISO-8859-1编码模式,则无法解析中文,这是乱码的原因

apparent_encoding会从网页的内容中分析网页编码的方式,所以apparent_encoding比encoding更加准确。当网页出现乱码时可以把apparent_encoding的编码格式赋值给encoding。
?

作用是? 防止乱码


?

2.获取帅哥图片并下载到本地

import requests

url = "https://cn.bing.com/images/search?view=detailV2&ccid=XQzISsWk&id=979B73C4E472CCA4C34C216CD0693FDC05421E1E&thid=OIP.XQzISsWklI6N2WY4wwyZSwHaHa&mediaurl=https%3A%2F%2Ftse1-mm.cn.bing.net%2Fth%2Fid%2FR-C.5d0cc84ac5a4948e8dd96638c30c994b%3Frik%3DHh5CBdw%252fadBsIQ%26riu%3Dhttp%253a%252f%252fp2.music.126.net%252fPFVNR3tU9DCiIY71NdUDcQ%253d%253d%252f109951165334518246.jpg%26ehk%3Do08VEDcuKybQIPsOGrNpQ2glID%252fIiEV7cw%252bFo%252fzopiM%253d%26risl%3D1%26pid%3DImgRaw%26r%3D0&exph=1410&expw=1410&q=%e5%bc%a0%e6%9d%b0&simid=608020541519853506&form=IRPRST&ck=68F7B9052016D84898D3E330A6F4BC38&selectedindex=2&ajaxhist=0&ajaxserp=0&vt=0&sim=11"

r = requests.get(url)

with open("zhangjie.jpg","wb") as f:
    f.write(r.content)

print("over!!!")

结果是这个:

但是这个照片在我的window电脑上打不开

找了好久资料,这个仍然没解决,有小伙伴知道可以在评论区指点指点?

?


3.获取美女视频并下载到本地

import requests


url = 'https://haokan.baidu.com/v?pd=wisenatural&vid=12502968524882193208'
r = requests.get(url)

with open('jk.mp4', 'wb') as f:
    f.write(r.content)

print('下载完成')

?


?

4.搜狗关键词搜索爬取

import requests
#网页收集器

url = "https://www.sogou.com/web/"
kw=input('enter a word: ')
header={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
param={
    'query':kw
}
response = requests.get(url=url,params=param,headers=header)
page_txt = response.text
filename = kw+'.html'
with open(filename,"w",encoding="utf_8") as fp:
    fp.write(page_txt)
print(filename,"保存成功")

?

?

5.爬取百度翻译

发现是post请求 (而且当你英文输入法下输入一个字母就会刷新一次页面)

import requests
import json
#获取url
post_url = "https://fanyi.baidu.com/sug"
#UA伪装
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}

#数据传入
word = input("enter a word:")
data = {
    'kw': word
}
response = requests.post(url=post_url,data=data,headers=header)
dic_obj = response.json()
#print(dic_obj)

#永久性储存
filename = word+'.json'
fp = open(filename,"w",encoding="utf-8")
json.dump(dic_obj,fp=fp,ensure_ascii=False)

print("over!!!")

保存为json文件,将json文件复制

我们打开json格式网站https://www.bejson.com/

?

6.爬取豆瓣电影榜单

import requests
import json

url = "https://movie.douban.com/j/chart/top_list"
params = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': '100',
'limit': '20'
}

header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}

response = requests.get(url=url,params=params,headers=header)
list_obj = response.json()

fp = open("./b.json","w",encoding="utf-8")
json.dump(list_obj,fp,ensure_ascii=False)

#最后去网页json格式网站格式化
print("over!!!")

?这里强调一下params在网站的这里

?

?

7.JK妹子爬取

import requests
import re
import urllib.request
import time
import os
header={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
url="https://cn.bing.com/images/async?q=jk%E5%88%B6%E6%9C%8D%E5%A5%B3%E7%94%9F%E5%A4%B4%E5%83%8F&first=118&count=35&relp=35&cw=1177&ch=705&tsc=ImageBasicHover&datsrc=I&layout=RowBased&mmasync=1&SFX=4"
r = requests.get(url=url,headers=header)
c = r.text
pattern = re.compile(r'<div class="imgpt".*?<div class="img_cont hoff">.*?src="(.*?)".*?</div>',re.S)
items = re.findall(pattern,c)

os.makedirs('photo',exist_ok=True)
for a in items:
    print(a)
for a in items:
    print("下载图片:"+a)
    b=a.split('/')[-1]
    urllib.request.urlretrieve(a,'photo/'+str(int(time.time()))+'.jpg')
    print(a+'.jpg')
    time.sleep(2)

?

?

补充一:如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始。

而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,在整体中进行匹配。

补充二:os.makedirs(name, mode=0o777, exist_ok=False)
作用
用来创建多层目录(单层请用os.mkdir)
参数说明
name:你想创建的目录名
mode:要为目录设置的权限数字模式,默认的模式为 0o777 (八进制)。
exist_ok:是否在目录存在时触发异常。如果exist_ok为False(默认值),则在目标目录已存在的情况下触发FileExistsError异常;如果exist_ok为True,则在目标目录已存在的情况下不会触发FileExistsError异常。
补充三:

描述
urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

函数说明

将URL表示的网络对象复制到本地文件。如果URL指向本地文件,则对象将不会被复制,除非提供文件名。返回一个元组()(filename,header),其中filename是可以找到对象的本地文件名,header是urlopen()返回的对象的info()方法(用于远程对象)。
第二个参数(如果存在)指定要复制到的文件位置(如果没有,该位置将是一个生成名称的tempfile)。第三个参数,如果存在,则是一个回调函数,它将在建立网络连接时调用一次,并且在此后每个块读取后调用一次。这个回调函数将传递三个参数;到目前为止传输的块计数,以字节为单位的块大小,以及文件的总大小。第三个参数可能是-1,在旧的FTP服务器上,它不返回文件大小以响应检索请求。

参数说明

url:外部或者本地url
filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据);

reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。

data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。
?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:09:12  更:2021-11-18 11:09:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:48:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码