爬虫基础(案例:爬取17K小说个人书架信息)

爬取思路:
1、进入17K官网,(先不要登录),然后点击书架,这时会弹出登录页面。
2、进行抓包,然后输入登录的账号密码(请勿使用第三方登录)
3、登录成功后,找到名称为login的包,这样就得到了登录的URL,Form data为请求时需要提交的信息。
4、使用post请求该URL,提交的信息data为Form data中的信息。
5、登录成功后,可以获得该URL的cookie信息,找到其中的accessToken
6、找到书架书籍所在的链接,使用get请求,请求头中要带有刚刚获取的accessToken
7、这样就得到了包含信息的json数据。

import requests
import json
#获取登录链接,登录网站的同时进行抓包,在Network中的XHR中可以找到,
login_url = "https://passport.17k.com/ck/user/login"
headers = {
    #User-Agent可以随便在一个网址上找一个
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"
    }
#Post请求需要传入数据,待传入的数据可以在Headers中的Form Data中找到
data = {
    "loginName": "15565827813",
    "password": "zhao15565827813"
    }

login_res =requests.post(login_url, headers = headers,data = data)

#看一下状态码,如果是200,说明访问成功
print(login_res.status_code)

#访问成功后,我们需要找cookie中的accessToken,
#该信息保存在headers中,可以打印查看,然后找到 accessToken
se_res = login_res.headers['Set-Cookie']
se_res_split = se_res.split(";")
cookie = ""
for i in se_res_split:
    if("accessToken" in i):
        cookie = i.split(",")[-1].strip()
        break
#至此我们已经得到了accessToken,把它命名为cookie并传给访问书架的函数
# print(cookie)


def visit_book(ck):
    #发现书架书籍信息都在该URL中,请求方式为get,可以直接访问
    url = "https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919"
    headers = {
        #User-Agent可以随便在一个网址上找一个
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36",
        "cookie":ck
    }
    res = requests.get(url,headers = headers)
    print(res.text)
#这样就访问成功了,如果不添加cookie,无法访问,因为没有身份信息
visit_book(ck = cookie)

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值