【爬虫Practice1】requests模块简单使用

环境说明

  系统是windows10,python版本是32位3.7版本。所有代码执行的案例来自于B站视频讲解内容,链接在路飞IT学城,但可能章节不是完全对的上的,仅是自己学习时的一些实验。

requests模块的简单用法

1. get() :以获取搜狗搜索首页为例
# MyGoal: get sougou page data
import requests
import io
import sys

if __name__ == "__main__":
    # step1:point the url
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
    url = 'https://123.sogou.com/'
    # step2:send request,'get'will return an response object
    response = requests.get(url=url, verify=False)
    # step3:get response, text is a string
    page_text = response.text
    print(page_text)
    # step4 keep storing
    with open('./sougou.html', 'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print('over!')
2. post():以百度翻译为例
# 在百度翻译栏中每输入一个字符就会发起一个Ajax请求 通过查看AJAX XHR文件发现是一个携带参数的post请求
import requests
import json
from fake_useragent import UserAgent

if __name__ == "__main__":
    # 通过抓包工具获得并指定URL
    post_url = 'https://fanyi.baidu.com/sug'
    # UA伪装
    headers = {
    
    
        'User-Agent': UserAgent().random
    }
    # 动态搜索
    inputdata = input("Enter the word: ")
    data = {
    
    
        'kw':inputdata
    }
    # 创建请求 返回json对象
    response = requests.post(url=post_url, data=data, headers=headers)
    content = response.json()
    fp = open(inputdata+'.json', 'w', encoding='utf-8')
    json.dump(content, fp, ensure_ascii=False)
    print("OK")
3. cookie与session:以17k小说网为例

  什么时候需要用session会话呢?就是需要登录后才能进行操作的。可以认为session 表示一连串的会话并能记住上下文。 在登录的过程中要获得账号名和密码,通常抓不到login的包,需要Preserve log,然后再输入登录信息。正常登录后就看不见login这个请求了,但勾选Preserve log后可以看见,并获得账号名和密码。这里以17k小说网为例获取书架的内容。

import requests
from fake_useragent import UserAgent
from lxml import etree

if __name__ == "__main__":
    url = 'https://passport.17k.com/ck/user/login'
    data = {
    
    
        'loginName': '输入用户名',
        'password': '输入用户密码'
    }
    # 1.登录得到cookie
    session = requests.session()
    response = session.post(url=url, data=data)
    cookie = response.cookies
    # 2.用session发送请求
    session_url = 'https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919'
    session_res = session.get(url=session_url)
    headers = {
    
    
        'User-Agent':UserAgent().random,
        'Cookie': '复制cookie进来'
    }
    res = requests.get(url=session_url, headers=headers)
    print(res.json())

猜你喜欢

转载自blog.csdn.net/lily_i/article/details/121879329