这个程序主要是用来学习,requests.Session()是怎么使用的

这个程序主要是用来学习,requests.Session()是怎么使用的

import requests
import time
import parsel

session_get = requests.Session()
headers = {
        'Referer':'https://accounts.douban.com/passport/login_popup?login_source=anony',# referer(参照页,告诉程序,登入的接口在哪里)
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
               }
data = {
    'ck': '',
    'name': '',# 输入豆瓣帐号
    'password': '',# 输入豆瓣密码
    'remember': 'false',
    'ticket': ''
}
def login_douban():# 这是登入函数,用的是requests.Session
					#注意Session的开头要大写,不然可能报错
    url = 'https://accounts.douban.com/j/mobile/login/basic'
    # 这个函数里的的“url”是豆瓣的登入接口,告诉程序,具体的提交表单的地址是什么
    try:
    # 把准备好的帐号密码,referer,headers全都post到接口去
        response = session_get.post(url,headers=headers,data=data).content.decode('utf-8')
        print(response)
    except Exception as e:
        print(e)

def get_artic(page=0):
    pages = int(page * 20)
    print(f'开始爬取第{int(pages)-20}-{int(pages)}条')
    url = f'https://movie.douban.com/subject/26608230/comments?start={pages}&limit=20&sort=new_score&status=P'
    try:
        response = session_get.get(url,headers=headers)
    except requests.HTTPError as e:
        print(e)
        print('错误码:',response.status_code)
        return 0
    except Exception as e:
        print(e)
    common_list = []
    html_sel = parsel.Selector(response.content.decode('utf-8'))
    common_tile = html_sel.xpath('//span[@class="comment-info"]')
    common_artic = html_sel.xpath('//div[@class="comment"]/p')
    for i, x in zip(common_tile, common_artic):
        title = i.xpath('./a/text()').extract_first()
        artic = x.xpath('./span/text()').extract_first()
        common_list.append(title + ',' + artic)
    print(common_list)
    with open(f'E:/AA/{(pages-20)}-{pages}短评.txt', 'w', encoding='utf-8')as f:
        f.write((str(common_list)).replace(',', '\n').replace('[', '').replace(']', '').replace("'", ''))

def batch_page():
    page = int(22)
    while 1:
        pages = int(page*20)
        print(pages)
        url = f'https://movie.douban.com/subject/26608230/comments?start={(pages)+1}&limit=20&sort=new_score&status=P'
        response = session_get.get(url,headers=headers)
        html_sel = parsel.Selector(response.text)
        common_page = html_sel.xpath('//div[@id="paginator"]/a[3]/text()').extract_first()
        get_artic(page)
        print(f'第{page}页',common_page)
        if page == 0:
            pass
        else:
            if not '后页' in str(common_page):
                print('error')
                return 0
        time.sleep(3)
        page += 1

if __name__ == "__main__":
    login_douban()
    batch_page()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值