跟路飞学爬虫(加油,你是最棒的!)

破解百度翻译

需求:
#post请求(携带了参数)
#响应数据是一组json数据

编写步骤
1、指定url
2、进行UA伪装
3、post请求参数处理(同get请求一致)
4、发送请求
5、获取响应数据
6、持久化存储
post请求:

import requests
import json

if __name__ == "__main__":
    #1、指定url
    post_url = 'https://fanyi.baidu.com/sug'
    #2、进行UA伪装
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'
        
        }
    #3、post请求参数处理(同get请求一致)
    data = {
        'kw':'dog'
        }
    #4、请求发送
    response = requests.post(url=post_url,data=data,headers=headers)
    #5、获取响应数据:json()方法返回的是obj(如果确认响应数据是json类型的,才可以json())
    dic_obj = response.json()
    #print(dic_obj)    #获取响应数据
    #持久化存储
    fp = open('./dog.json','w',encoding = 'utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)

    print('over!!!')

对于开头的__name__ == "main"有疑问,所以查了查。有以下几种说法:
1)象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此。
2)name__属性是Python的一个内置属性,记录了一个字符串。
若是在当前文件,name 是__main

在hello文件中打印本文件的__name__属性值,显示的是__main__
在这里插入图片描述
若是导入的文件,name__是模块名。
test文件导入hello模块,在test文件中打印出hello模块的__name__属性值,显示的是hello模块的模块名。
在这里插入图片描述
因此__name
== ‘main’ 就表示在当前文件中,可以在if name == ‘main’:条件下写入测试代码,如此可以避免测试代码在模块被导入后执行。
总结
“if name==‘main’:”很多时候看似无用,但是,出于代码的规范性,还是有必要的。

豆瓣电影

get请求:

import requests
import json

if __name__ == "__main__":
    url = "https://movie.douban.com/j/chart/top_list?"
    #Query String Parameters  //get请求中url后面要带的参数,即上面url问号后面的内容
    #params是一个计算机函数,表示函数的参数是可变个数的,即可变的方法参数
    param = {
        'type':'24',
        'interval_id':'100:90',
        'action': '',
        'start': '0',#从库中的第几部电影去取
        'limit': '20',#一次取出的个数
        }
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'
        }
    response = requests.get(url = url,params = param,headers = headers)
    list_data = response.json()
    fp = open('./douban.json','w',encoding='utf-8')
    #json 模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 json.loads()。
    #json.dump()将一个Python数据结构转换为JSON;
    #json.loads将一个JSON编码的字符串转换回一个Python数据结构;
    json.dump(list_data,fp=fp,ensure_ascii=False)

    print('over!')

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值