Python如何抓取异步加载数据

海外翻墙免费加速器[入口]

1、寻找异步加载的接口

通过谷歌浏览器的Network查找,一般异步加载常见的有两个可能:XHR,JS。所以我们在点击进行响应时,只要观察这两项加载的内容就可以清晰的知道接口的地址。(需要注意的是:Request常用的有两种情况,1.get 2. post)

get的情况:查看Request URL

post的情况:在写脚本的时候需要加上data数据,要不然无法访问获取数据。

2、获取接口之后就是要查看接口里面的数据

一般json的数据都是字典数列组成的,可以通过http://json.cn/查看,是否是json格式。(要注意的是复制的时候要复制源码,而不是展示的代码)。

3、使用json获取想要的信息

3.1 一般的使用方法就是 json(名字随意写)=cont(获取接口的源码的内容).json() (固定格式)。

3.2 一般还要用到数列的一些方法,比如遍历数列 for i in list,获取字典内容 list[‘data’]。

4、demo

获取马蜂窝http://www.mafengwo.cn/jd/52314/gonglve.html,亚洲全部景点的名称。

#coding=utf8

import requests

import re

import json

from bs4 import BeautifulSoup as bs

headers = {

‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36′,

}

for i in range(1,3277):

print “page=”+str(i)

data={

‘sAct’:’KMdd_StructWebAjax|GetPoisByTag’,

‘iMddid’:’52314′,

‘iTagId’:’0′,

‘iPage’:i,

}

url = ‘http://www.mafengwo.cn/ajax/router.php’

cont=requests.post(url,headers=headers,data=data)

json=cont.json()

list1=json[‘data’][‘list’]

soup=bs(list1,”html.parser”)

href=soup.find_all(‘a’)

for i in href:

name=i[‘title’]

print name

未经允许不得转载:陈海飞博客 » Python如何抓取异步加载数据

分享到:更多 ()