python学习连续剧2

python学习日记

注:写这个纯属为了督促自己学习,记录一下学习历程。
大四学生在读,是个贼懒的工科女王吧
之前有一些littlelittle的基础,寒假决定重新自学python,争取每天更新自己的学习笔记!fighting!

2020年2月5日 第2⃣️篇

今天做了两个案例,分别是百度网页搜索模块and百度翻译
其实这节课有三四个案例啦,但是只做了两个,因为做了这两个感觉有很多没学过的东西需要填补填补,就停下来啦,巩固一下薄弱的基础知识。

一些笔记📖

这节课没怎么记东西,把一些写代码的时候会出现,但自己还不懂的小点写一写吧。

1. UA伪装

UA即User-Agent,相当于用户的身份,是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。(来自百度
浏览器的UA字串:
标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息
我的UA:
Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36
UA伪装,按我的理解来说,是当我们用python去获取网站上的信息时,需要伪装一下,让服务器认为我们是用户通过浏览器发出的请求,因此需要UA。

一些注释:
Mozilla一词是由“Mosaic Killa”(Mosaic杀手/终结者,Killa是俚语中Killer的拼法)和“Godzilla eat the Mosaic”(Godzilla,即“哥斯拉”,日本遭受核打击和“第五福龙丸”事件后创造的经典虚拟生物)合成而来。即Mosaic+Godzilla+Killa=Mozilla
Macintosh(简称Mac)是苹果公司自1984年起开发的个人消费型计算机
KHTML,是HTML网页排版引擎之一,由KDE所开发。KDE系统自KDE2版起,在文档及网页浏览器中使用了KHTML引擎。
Gecko是套开放源代码的、以C++编写的网页排版引擎。
Gecko是跨平台的,能在Microsoft Windows、Linux和Mac OS X等主要操作系统上运行。它是最流行的排版引擎之一,其流行程度仅次于Trident。

如何获取UA?

chrome右击页面,选择“检查”,会出现如下界面,(我的一出来就是这种左右分的,视频里是上下分的,也没啥大问题吧)

在这里插入图片描述

然后在这个黑色的检查界面中,上面那一排,选择Network,出来的应该是下面这种(如果没有就刷新一次页面

在这里插入图片描述

选第一个吧,headers下找user-agent

在这里插入图片描述

copy paste UA就OK啦

2. 关于URL

URL-uniform resource locator
是WWW的统一资源定位标志,就是指网络地址。

URL的一般语法格式为:
(带方括号[]的为可选项):
protocol : // hostname [: port ] / path / [;parameters][?query]#fragment

protocol(协议):传输协议,像http和https
hostname(主机名):是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。
Port(端口号):整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。
path(路径):由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
parameters(参数):这是用于指定特殊参数的可选项。
query(查询):可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。
fragment(信息片断):字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
(来源百度🔍

搜索界面的url获取

我这里用的是百度🔍,在搜索框随便搜个词,可以看到新弹出的页面的url:

在这里插入图片描述

可以看到这个url非常长,复制过来格式变了,只能贴图了 :(
但是实际上我们只需要前面一小部分就能得到搜索页面了

在这里插入图片描述

s代表调用搜索模块
?是分隔符
所以我们需要的url到s就足够了
wd应该是word
感觉百度和搜狗挺不一样的,老师用的是搜狗,url的com后面跟的是web,反正卡到?分隔符前面就可以了

实战一 百度搜索模块调用

基本步骤:

1. 获取UA
2. 获取URL
3. 建立输入
4. 获取响应
5. 进行存储
UA和URL的获取上面都说了,现在pass
调用其搜索模块后,要完成搜索任意对象的功能
再用requests模块里面的get获取response
对其text进行存储就OK啦
原代码呈上⬇️
#UA伪装
#user-agent
#伪装一下 是基于这一款浏览器的身份标识才能请求成功
import requests
if __name__ == "__main__":
    headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36'
    }
    url = 'https://www.baidu.com/s'
    #处理url
    kw = input('enter a word:')
    param = {
        'wd': kw
    }
    response = requests.get(url=url, params=param, headers=headers)

    page_text = response.text
    filename = kw+'.html'
    with open(filename, 'w', encoding='utf-8') as fp:
        fp.write(page_text)
    print('over!')

实战二 百度翻译模块

在这个实战中,我们也需要获取UA和URL,方法跟上面一样
这里的URL跟上面不同,需要花一点心思去找。在百度翻译的网页上,打开“检查”,切到 network 选择XHL,在翻译框里输入dog或者另外的单词,找到kw关键词是dog的sug,往上翻找到的url就是我们需要的翻译页面的url

在这里插入图片描述

json类型

这里sug的response headers中 content-type是json
因此还用到了json模块,属于我完全不懂的地方,百度了一下,json是可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式。我把它理解成一个传递数据的载体
json.dump()用于将dict类型的数据转成str,并写入到json文件中。json.dump() 和 json.load() 来编码和解码JSON数据。(看起来好好用

ajax

这个百度翻译的页面,大家可以看到是属于敲一个字母刷新一次的,属于局部刷新的类型,这里就说到了ajax(同样一脸懵
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
import requests
import json
if __name__ == "__main__":
    #1.指定url
    post_url = 'https://fanyi.baidu.com/sug'
    #2.进行UA伪装headers字典
    headers = {
        'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36'
    }
    #3.post请求参数处理 同get param
    word = input('enter a word:')
    data = {
        'kw':word
    }
    #4.请求发送
    response = requests.post(url=post_url, data=data, headers=headers)
    #5.获取响应数据 用json方法 返回的是obj 仅限于response为json类型使用
    dic_obj = response.json()
    #6.持久化存储
    filename = word+'.json'
    fp = open(filename,'w',encoding='utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)

    print('over!')

好啦,这就是今天的所有内容了,今天也学到了好多新的知识呢!希望以后读研究生能把他们都用起来,fighting!💪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值