尚硅谷爬虫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)
相关推荐
Jelena技术达人2 小时前
爬虫获取翻译文本接口:技术实现与应用实践
爬虫·python·php
奔跑吧邓邓子7 小时前
【Python爬虫(67)】Python爬虫实战:探秘旅游网站数据宝藏
开发语言·爬虫·python·旅游网站
数据小爬虫@7 小时前
爬虫抓取数据时如何处理异常?
爬虫
HerrFu7 小时前
可狱可囚的爬虫系列课程 15:防盗链反爬虫的处理
爬虫·python
Java开发-楠木7 小时前
【js逆向入门】图灵爬虫练习平台 第八题
javascript·爬虫
Jelena技术达人7 小时前
爬虫获取 t_nlp_word 文本语言词法分析接口:技术实现与应用实践
爬虫·自然语言处理·word
HerrFu7 小时前
可狱可囚的爬虫系列课程 14:10 秒钟编写一个 requests 爬虫
爬虫·python
数据小小爬虫7 小时前
Java爬虫中如何处理JavaScript渲染的页面?
java·javascript·爬虫
数据知道7 小时前
爬虫反爬:字体反爬案例分析与爬取实战
爬虫·python·数据采集·爬虫解析