尚硅谷爬虫note13

一、requestes的post请求

复制代码
# _*_ coding : utf-8 _*_
# @Time : 2025/2/24 13:57
# @Author : 20250206-里奥
# @File : demo04_requests_post请求
# @Project : 24-28
import requests

#爬取百度翻译

url = 'https://fanyi.baidu.com/sug'

headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'
}

data = {
    'kw': 'eye'
}

#url:请求地址;  data:请求参数;  kwargs:字典
response = requests.post(url = url,data = data,headers = headers)

content = response.text

# print(content)
#json转为中文
import json
obj = json.loads(content,encoding = 'utf-8')
print(obj)

#总结
#post请求不需要编解码
# post请求的参数是data,和get不一样
# 不需要请求对象的定制
#

二、代理

复制代码
# _*_ coding : utf-8 _*_
# @Time : 2025/2/26 09:04
# @Author : 20250206-里奥
# @File : demo05_requests_代理
# @Project : 24-28


#
import requests

url = 'https://www.baidu.com/s?'

# headers
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'
}
#data
data = {
    'wd':'id'
}
#快代理,字典
#协议同url里面的协议:HTTP/HTTPS
#购买及使用快代理:购买成功------查看订单------生成api链接------生成链接------复制链接------网址栏输入复制的链接
proxy = {
    'https':'106.119.160.179:16817'
}

response = requests.get(url = url,data = data,headers=headers,proxies=proxy)
content = response.text
# print(content)
#保存到本地
with open('代理.html','w',encoding='utf-8') as fp:
    fp.write(content)

三、cookie登录古诗文网

复制代码
# _*_ coding : utf-8 _*_
# @Time : 2025/2/26 10:16
# @Author : 20250206-里奥
# @File : demo06_requests_cookie登录古诗文网
# @Project : 24-28

#cookie登录古诗文网

#通过登录 然后进入到主页面
#如何查找登录接口(2种方式):1)检查------network,然后输入错误信息登录时抓接口(不要点击登陆失败时弹出的"确定",否则会跳转)------login...开头的就是登录接口;2)

#通过查找登录接口,可以看到需要的参数很多
#不认识的参数基本上是变化的:__VIEWSTATE;__VIEWSTATEGENERATOR;code
# __VIEWSTATE: j9SsxAuP/f7v1794M9LEIWoK2Jx/4qtmwepRqN+aevIgLxxX3YjeIrMITMUp/Nrq4rRR6CE+XWm+8YdD6KgBrQTXez33HSrkVv1ODKBTBv3fIF/65RI2RP/BVt4HnMYqP79opleiv78IofwEBY4AGOa8ZdQ=
# __VIEWSTATEGENERATOR: C93BE1AE
# from: http://www.gushiwen.cn/user/collect.aspx
# email: 18485786140
# pwd: 122222222
# code: tkz6
# denglu: 登录

#难点1)__VIEWSTATE;__VIEWSTATEGENERATOR;一般情况下,看不到的数据在页面源码中
#   2)验证码
#hidden:隐藏域,页面中存在,但是不在页面中显示
#__VIEWSTATE;__VIEWSTATEGENERATOR在页面源码中,所有需要获取源码进行解析

import requests
#登录页面的url
url = 'https://www.gushiwen.cn/user/login.aspx?from=http://www.gushiwen.cn/user/collect.aspx'
#U-A
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'
}

#访问
response = requests.get(url=url,headers=headers)
# 获取数据
content = response.text
# print(content)

#解析页面源码,获取__VIEWSTATE;__VIEWSTATEGENERATOR
from bs4 import BeautifulSoup
soup = BeautifulSoup(content,'lxml')
#获取__VIEWSTATE,返回的是一个列表
viewstate = soup.select('#__VIEWSTATE')[0].sttrs.get('value')
#获取__VIEWSTATEGENERATOR
viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')

print(viewstate)
print(viewstategenerator)


#获取验证码图片
code = soup.select('#imgCode')[0].attrs.get('src')
code_url = '' + code

# 获取验证码图片之后,控制套输入验证码,给code的参数就可以登录

import urllib.request
urllib.request.urlretrieve(url = code_url,filename='code.jpg')


#requests里有一个方法session():通过session的返回值,可以使请求变成1个对象
session = requests.session()
response_code = session.get(code_url)
#此时要使用二进制数据
content_code = response_code。content
#wb模式:将二进制数据写入文件
with open('code.jpg','wb',) as fp:
    fp.write(content_code)



code_name = input('请输入验证码')


url_post = ''
data_post = {
    '__VIEWSTATE': viewstate,
   ' __VIEWSTATEGENERATOR': viewstategenerator,
    'from': 'http://www.gushiwen.cn/user/collect.aspx',
    'email': '18485786140',
    'pwd': '122222222',
    'code': code_name,
    'denglu': '登录'
}

response_post = session.post(url = url,headers=headers,data=data_post)
content_post = response_post.text

with open('gushiwang.html','w',encoding='utf-8') as fp:
    fp.write(content_post)

# #requests里有一个方法session():通过session的返回值,可以使请求变成1个对象
# session = requests.session()
# response_code = session.get(code_url)
# #此时要使用二进制数据
# content_code = response_code。content
# #wb模式:将二进制数据写入文件
# with open('code.jpg','wb',) as fp:
#     fp.write(content_code)
相关推荐
小白学大数据14 小时前
长周期爬虫的数据一致性:断点续爬 + 事务回滚保障采集质量
开发语言·爬虫·测试工具
正在走向自律20 小时前
WorkBuddy AI工具使用介绍完全指南
人工智能·爬虫·ai编程·workbuddy·ai的力量
雨晨源码(同名B站)20 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
鬼手点金1 天前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json
zhougl9962 天前
Java Spring Boot 爬虫技术全面介绍
java·spring boot·爬虫
Cory.眼2 天前
Python爬虫实战:从入门到进阶
开发语言·爬虫·python
python布道者05162 天前
【技术分享】从零构建YouTube评论爬虫:TKinter + Pandas + 反反爬全解析
爬虫·youtube
zhougl9962 天前
Java实现腾讯云开发者社区列表爬虫
java·爬虫·腾讯云
Experience-摆渡3 天前
Firecrawl深度调研报告:功能、实现原理、架构与自研落地建议
爬虫