爬虫笔记2:1百度翻译2豆瓣电影

本文讲述了如何通过Python编程抓取百度翻译和豆瓣电影的Ajax数据,包括分析URL结构、识别参数、发送请求并处理响应,以获取特定页面的翻译文本和电影数据。
摘要由CSDN通过智能技术生成

思路

1.确定需求

2.观察url,分析url,找到指定的url

3.写代码

一、百度翻译

需求分析:获取某个特定的翻译文本数据

分析url:打开百度翻译页面,分别输入cat和dog两个单词,分析网站

百度翻译-200种语言互译、沟通全世界! (baidu.com)

百度翻译-200种语言互译、沟通全世界! (baidu.com)

发现只有后面的参数改变了,而且页面只是局部的更新-->ajax请求

找指定url方法:

1打开百度翻译页面

2右击'检查'--点击'网络'--点击'XHR'--在百度翻译页面的输入文本框,用英文状态输入cat--找到对应的sug(如下图,三个英文字母有三个sug,找到表单数据是cat的)

 3从sug中可以得到如下信息:

请求url、请求方法、Content-Type、以及输入关键词要用的形参

 代码:

#0
import json
import requests
if __name__ == '__main__':
#1指定url(但是是post请求)
    post_url='https://fanyi.baidu.com/sug'
#2UA伪装
    headers={
        'User-Agent':'x' #x 是网页的User-Agent
    }
#3处理参数 用字典封装参数
    #设置为动态获取
    word=input("enter word:")
    data={
        'kw':word
    }
#4发送请求
    response=requests.post(url=post_url,data=data,headers=headers)
#5获取相应数据  注意:text()返回的是字符串类型的数据  json()返回的是对象(如果确认响应数据是json类型的,才可以使用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) #因为输出有中文,不能使用ascii码值

    print("over")

结果

 遇到的问题

ajax请求感觉还不是很懂,不知道在不知情的情况下要怎么看出是否是ajax请求(暂未解决)

二、豆瓣电影

需求分析:在豆瓣电影的某个页面获取当前页面的电影的数据(名称,导演...)

分析url(以豆瓣电影-排行榜-喜剧为例)

        观察:鼠标拖到最底发现,鼠标回到某个位置并且页面中又加载了一些电影出来

        发现:鼠标拖到最底会发送请求,并且url不变,是ajax请求

找到指定url:

        网页右击'检查'--点击'网络'--点击'XHR'--在页面中鼠标拖动到最底--出现新的包

其中请求的url是:

https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=20&limit=20

 代码中指定的url需要参数去掉(就是删除?和?后面的内容)

代码

#0
import requests
import json #因为要做持久化存储所以要导入json包
if __name__ == '__main__':
#1
    url='https://movie.douban.com/j/chart/top_list'
    #因为指定的url携带了参数 所以可以去掉参数,把参数封装到字典里面
    param={
        #发送请求的参数
        'type':'24',
        'interval_id': '100:90',
        'action':'',
        'start':'1', 
        'limit':'20' 
    }
#2
    headers={
        'User-Agent':'x' #x 是网页的User-Agent
    }
#3
    response=requests.get(url=url,params=param,headers=headers)
    #响应数据最外层用的是[] (列表)
    list_data=response.json()
#4 写入json格式的文件中
    fp=open('./douban.json','w',encoding='utf-8')
    json.dump(list_data,fp=fp,ensure_ascii=False)
#可以把结果复制到json解析器(直接在浏览器搜json解析,复制文件里面的内容过去)查看获取的数据 
    print("over")

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值