尚硅谷爬虫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)
相关推荐
我需要一个支点16 小时前
douyin无水印视频下载
爬虫·python
喵手16 小时前
Python爬虫实战:采集各大会展平台的展会名称、举办时间、展馆地点、主办方、行业分类等结构化数据(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集大会展平台信息·展会名称举办时间展馆地址·采集数据csv/json导出
0思必得017 小时前
[Web自动化] Selenium执行JavaScript语句
前端·javascript·爬虫·python·selenium·自动化
0思必得017 小时前
[Web自动化] Selenium截图
前端·爬虫·python·selenium·自动化
feasibility.17 小时前
playwright爬虫采集京东商品主页数据(含xpath定位示例)
爬虫·playwright
喵手19 小时前
Python爬虫实战:博物馆官网的“展览预告/正在热展”栏目,抓取展览名称、精确展期、具体展厅位置以及票务/预约规则(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·博物馆信息采集·采集展览预告/正在热展等·采集数据csv导出
喵手19 小时前
Python爬虫实战:电商实体消歧完整实战 - 从混乱店铺名到标准化知识库的工程化实现,一文带你搞定!
爬虫·python·算法·爬虫实战·零基础python爬虫教学·同名实体消除·从混乱店铺名到标准化知识库
小白学大数据19 小时前
实测数据:多进程、多线程、异步协程爬虫速度对比
开发语言·爬虫·python·php
袖清暮雨21 小时前
Python爬虫(Scrapy框架)
开发语言·爬虫·python·scrapy
喵手21 小时前
Python爬虫实战:采集双色球(SSQ)历史开奖数据(期号、红球、蓝球、开奖日期)等信息,并进行结构化CSV存储(Requests + Pandas)!
爬虫·python·爬虫实战·零基础python爬虫教学·双色球历史开奖数据·期号红球篮球开奖日期等·结构化csv存储