6 浏览器抓包及headers设置(案例一:抓取知乎) jason格式



翻页后url不变

今日头条url也没有变化翻页
左侧多了

chorm中josonview插件
所以加入不一样的请求头:headers
http://www.zhihu.com/api/v4/people/112 根据经验把api删掉即可打开这个链接
第一个参数固定是url不用指定,后面的参数需要指明。headers字典。
下面是翻页
百度输入python.extend


import requests
import pandas as pd
import time

headers = {
    'authorization':'Bearer 2|1:0|10:1513832293|4:z_c0|92:Mi4xUFJOakF3QUFBQUFBa0lLVHVlN2REQ1lBQUFCZ0FsVk5aWTBvV3dBTW4yUk1XX0l2YjNhNlNSUmhmRy1GaDZsWWVR|d45ed089d0c3ca18eff8a3f5bee812db4804d2a13a92b69f124d47b5a82d0292','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3278.0 Safari/537.36','X-UDID':'AGBsMCXoEg2PTrQf77mdwRHSy0xePXc5juQ='
}
url = 'https://www.zhihu.com/api/v4/members/zhong-guo-ke-pu-bo-lan/followers?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset=60&limit=20'

user_data = []
def get_user_data(page):  #爬取几页
    for i in range(page):
        url = 'https://www.zhihu.com/api/v4/members/excited-vczh/followees?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={}&limit=20'.format(i*20)
        response = requests.get(url, headers=headers).json()['data']
        user_data.extend(response) #把response数据添加进user_data
        print('正在爬取第%s页' % str(i+1))
        time.sleep(1) #设置爬取网页的时间间隔为1秒,爬虫暂停1s,防止被监测到

if __name__ == '__main__':
    get_user_data(10)
    df = pd.DataFrame.from_dict(user_data)
    df.to_csv('users.csv')
截止。

'''
response = requests.get(url,headers = headers).json()['data']

df = pd.DataFrame.from_dict(response) #from_dict函数可以直接把json数据转换
df.to_csv('zhihu.csv')#出现错误,经验告诉是知乎反爬


'''
json是个像字典一样使用的东西。
你看看json返回的东西,是一个字典,取字典的值是怎样取的就怎样取,xpath是取源代码的
代码运行结果如下:













a选项不一定是当前页面,因为有时候翻页页面地址不变。  
x-requested-with XMLHttpRequest //表明是AJax异步,也就是json格式

range(3) 0,1,2





星号题


你可能感兴趣的:(python爬虫)