尚硅谷爬虫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)
相关推荐
weixin1997010801612 小时前
[特殊字符] 人工抓取数据革命:从“人肉爬虫”到“智能数据工厂”全面转型指南
开发语言·爬虫·python
川冰ICE14 小时前
Python爬虫实战㉘|综合实战3,新闻热点追踪与舆情分析系统
开发语言·爬虫·python
devnullcoffee1 天前
亚马逊Browse Node类目树数据采集实战:从PA-API到分布式爬虫
分布式·爬虫·亚马逊数据采集 api·亚马逊类目树数据·亚马逊 browse node·amazon 数据 api
aP8PfmxS22 天前
网络爬虫是自动从互联网上采集数据的程序
爬虫
Serendipity_Carl2 天前
爬虫实战进阶-穷游论坛网清洗与可视化分析
爬虫·python·数据可视化·数据清洗
深蓝电商API2 天前
爬虫代理IP智能调度:基于响应速度的实时评分算法
爬虫·算法
深蓝电商API2 天前
爬虫数据质量监控:完整性校验+异常检测+自动重试机制
爬虫
WL_Aurora2 天前
Python爬虫实战(九):百度百聘招聘数据采集
爬虫·python·百度
跨境数据猎手2 天前
跨境商城反向海淘系统开发全流程逻辑(上)
人工智能·爬虫·系统架构