ajax爬虫小案例(百度翻译)

一、爬虫分析的三个步骤

第一步:右键“查看网页源代码”,查找【Ctrl+F】需要的数据(复制整个url或者是复制id的具体内容

第二步:分析网页ajax异步加载可能性

第三步:js混淆加密(更复杂)

二、确立目标

(1)需要什么数据

(2)我们要在多久内拿到多少数据

三、动态网站ajax异步加载分析过程---->百度翻译demo测试

(1)右键“检查”(或者快捷键F12),关注以下几个部分

 (2)具体过程

 I.操作准备

找到Network模块,点击网页进行刷新/点击“翻译”按钮/快捷键【Ctrl+R】

点击左边红色的圈圈表示监听网页(灰色则表示没有在加载数据),

选择XHR(表示过滤掉js、jpg、html内容)有时需选择All勾选上Preserve log

II.查找数据

          当前浏览器的子页面向服务器发起的所有数据交互都会保存在列表里,每刷新一次产生10几个交互是很常见的,即列表里会存储浏览器请求后服务器返回的所有内容,这个过程称之为“抓包

        如何判断网页链接判断是不是我们要的,我们需要一个个点击网页的响应查看Preview/Response的内容,查看到有我们想要的内容,即找到了对应url)

====>Preview内容:通常是json或者html

====>Response内容:通常是json内容

 这个url的Headers模块中,我们需要的内容往往包括这些,这些是需要加入代码里的:

        General板块下的Request URL、Request Method

        Request Headers板块下的Cookie、User-Agent、Referer(表示跳转的网页链接),在代码中构成dict格式

 我们代码里是使用requests库的get方法还是post方法,取决于Headers>Request Method的结果

我们这里是模拟浏览器去请求,因此我们参考的内容是请求头(Request Headers

 我们需找到一个From data的参数(可能在Headers/Payload板块中)在代码中构造成dict格式

III.百度翻译demo测试

import json
import pandas as pd
import requests

url='https://fanyi.baidu.com/v2transapi?from=en&to=zh'
#选中一整行复制
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'cookie':'BIDUPSID=5B4AA60C2935886F7357106BA7A55757; PSTM=1640050986; BAIDUID=5B4AA60C2935886FA893ED419C7FED7A:FG=1; __yjs_duid=1_9a1dcf9ec30f4d25954cc4eed28a5e641640051186784; BDSFRCVID_BFESS=5_kOJexroG04FSjHv-clUrd-qgKK0gOTDYLEOwXPsp3LGJLVgK9uEG0Pt_U-mEt-J8jwogKK3gOTH4DF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=tbkD_C-MfIvDqTrP-trf5DCShUFshnkOB2Q-XPoO3KtMsxOFybDV-pkAKx8Lb4biWbRM2MbgylRp8P3y0bb2DUA1y4vpKMP8bmTxoUJ2XMKVDq5mqfCWMR-ebPRiJ-b9Qg-JKpQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0hI0ljj82e5PVKgTa54cbb4o2WbCQ-pPM8pcN2b5oQTO3QRbBBnKLK2QPQJ-E-R3vOIJTXpOUWfAkXpJvQnJjt2JxaqRC5hkBfq5jDh3MBpQDhtoJexIO2jvy0hvctb3cShPmQMjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhDNtDt60jfn3aQ5rtKRTffjrnhPF3hJ8UXP6-hnjy3b4JKfO_WPLVHpnaK48VKt-UyN3MWh3RymJ42-39LPO2hpRjyxv4bUn-5toxJpOJXaILWl52HlFWj43vbURvDP-g3-AJ0U5dtjTO2bc_5KnlfMQ_bf--QfbQ0hOhqP-jBRIEoK0hJC-2bKvPKITD-tFO5eT22-usyJ7C2hcHMPoosItmQlb8yb5D-PnPbt0L-CviaKJjBMbUoqRHXnJi0btQDPvxBf7p5208Ll5TtUJM_UKzhfoMqfTbMlJyKMnitKv9-pP23pQrh459XP68bTkA5bjZKxtq3mkjbPbDfn028DKuDTtajj3QeaRabK6aKC5bL6rJabC3Mf7cXU6q2bDeQN0J0qJBWTFL3bRG-J-VqJ3oyT3JXp0vWtv4WbbvLT7johRTWqR4epkw5fonDh83Bn_L2xQJHmLOBt3O5hvvhn3O3MAMQMKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_E5bj2qRIJ_Dty3j; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=35411_34443_35104_31253_35240_34584_35491_35583_35245_34578_35644_35316_26350_35474; delPer=0; BAIDUID_BFESS=01232F3EB81B38AE132C3EDC1DDE0D63:FG=1; PSINO=7; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; SOUND_PREFER_SWITCH=1; SOUND_SPD_SWITCH=1; HISTORY_SWITCH=1; BA_HECTOR=0g0kag0k0484ak0g6t1gsktq30r; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1640658815,1640658832,1640658846,1640658859; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1640658859; ab_sr=1.0.1_NmExYWExMTg4ZGRhYTcyOTc0OGUyNTU4OGVjNWVlYmRlNjUzYWNlNzYzZjI2N2UzNWRkNmRlOWRlNjU2YTIyZTNjNGQ5YmMxNmRjN2Y3MWI4N2JlMGRhODhlZTMxY2QxM2VlNjc4MDRiYWI0Mzk4ODBlYjg1YjdjOWQ3YWI1Mjc4NjMyM2U2Y2FiMDdjYjk2ZmZiMTBiOTFjY2NmNjRhZQ==; __yjs_st=2_NjJjMzZjNzcyZWE3ZjhlNjkzY2ZkMzMzNDRkYmY2MDA2ODE4YWM0NGM3ZGEzZTExYmJkOTRiMDBiNDhkMzA3M2I1YWEzMmJmNjhmNzQxODhiOWMzMjFhYzVjNmQzNWIzZTgwOWUwZDBlMzY2ZTBkMmViMGVhMTMxZWYzZWMzZGJkNmUwYzU3NjJiZDhhNzMxMGM5Zjg3OWE1ZDQwYzBhNmQwNDhkN2UzMmI1NWFiNzRiMDgwZmI2ODBjMzdjYTQyZTAxMTE1ZWNiYmRhOGNjMjc1NDM3ZjlmZWEwODYzMDA3NjMyMjdhMTI1OGM3MmQ2ODZjNmE4MjVhNTZmNmQ2YV83X2E3NThlM2Q0'}
data={
'from': 'en',
'to': 'zh',
'query': 'dog',
'simple_means_flag': '3',
'sign': '871501.634748',
'token': '3b9acd3118195f3ee44f4fdf17998482',
'domain': 'common'
}
rsp=requests.post(url,data=data,headers=headers)
print(rsp.text)
dict_obj=rsp.json()   #转为dict
print(dict_obj['trans_result']['data'])  
filename='dog.json'
fp=open(filename,'w',encoding='utf-8')
json.dump(dict_obj,fp=fp,ensure_ascii=False)   #当内容包含中文需添加ensure_ascii=False
print('保存成功!')
df_1=pd.DataFrame(dict_obj['trans_result']['data'])  #将dict内容存为dataframe
print(df_1)

结果如图:

在这里,rsp.text的内容是网页对应内容,而且内容很多

IV.报错检查

"errno":997,"errmsg":"\u672a\u77e5\u9519\u8bef","query":"dog","from":"en","to":"zh","error":997}

 出现这个内容,我们需添加cookie参数才显示正常内容

四、参考网址

AJAX异步爬虫Python开发实战(精讲)_哔哩哔哩_bilibili

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值