zoukankan      html  css  js  c++  java
  • 爬虫学习---基础操作--抽屉新热榜自动点赞与豆瓣自动统一短评

    爬虫的学习相对来说,比较烦锁,因为网站的反爬规则,经过两天的研究,终于搞定了抽屉新热榜自动点赞与豆瓣自动统一短评(豆瓣登录的验证码目前需要手动输入)

    抽屉网的规则问题

    示例如下:

     1 import requests,re
     2 from bs4 import BeautifulSoup
     3 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0'
     4 }
     5 user='你的帐号'
     6 pwd='你的密码'
     7 def index_first():#抽屉网需要GET的COOKIES
     8     r1=requests.get('https://dig.chouti.com/',headers=headers)
     9     return r1.cookies.get_dict()
    10 def login(cookies,user,pwd):
    11     post_dict={ #登陆时要提交的数据
    12         'phone':user,
    13         'password':pwd,
    14         'oneMonth':1
    15     }
    16     response = requests.post(#要登陆的网址
    17          url="https://dig.chouti.com/login",
    18          data=post_dict,
    19         cookies=cookies,#带上cookies进行授权
    20         headers=headers
    21      )
    22     print(response.text,'url')
    23     return
    24 
    25 def profiles(cookie_gpsd):#进入个人主页
    26     response=requests.get(
    27         url='https://dig.chouti.com/profile/bind',
    28         cookies=cookie_gpsd,
    29         headers=headers
    30     )
    31     soup =BeautifulSoup(response.text,features='html.parser')#python 内置转换的对象
    32     phone=soup.find(id='bind-content')
    33     #phone_nube=phone.find('class')
    34     reg=r'<div class="show-phoneCode">当前绑定号码为:(.*?)</div>'
    35     rest=re.findall(reg,response.text)#查找
    36     print('',rest)
    37     if rest[0]=='+你的手机号':
    38         print('进入个人设置成功')
    39 
    40 def dz(cookies_dict):
    41     ret=requests.post(url='https://dig.chouti.com/link/vote?linksId=18760066',#要点赞的文章地址
    42                   cookies=cookies_dict,
    43                   headers=headers)
    44     print(ret.text)
    45 
    46 
    47 cookie_get=index_first()#先取得GET的cookies
    48 login(cookie_get,user,pwd)#登陆进行cookies的授权
    49 profiles(cookie_get)#可以进行后台
    50 dz(cookie_get)#点赞

    豆瓣网

     1 import requests
     2 import re
     3 import json
     4 from bs4 import BeautifulSoup
     5 
     6 requests =requests.Session()#记录登录的状态
     7 if __name__ == '__main__':
     8     user='你的帐号'
     9     pwd='你的密码'
    10     #请求头
    11     headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0'
    12     }
    13 
    14     def login():
    15         response=requests.get('https://accounts.douban.com/login',headers=headers)
    16         response.encoding=response.apparent_encoding  #返回网页的原先编码
    17         result=response.text#取出文本即网页源码
    18         reg=r'<input type="hidden" name="captcha-id" value="(.*?)"/>'#正则表达式
    19         catpchaId=re.findall(reg,result)#查找 验证码对象ID
    20         soup =BeautifulSoup(result,features='html.parser')#python 内置转换的对象
    21         target=soup.find(id='captcha_image')#查找 验证码对象
    22         img_url =target.attrs.get('src')#获取验证码图片URL
    23         print(img_url,catpchaId)
    24         response=requests.get(img_url,headers=headers)#获取验证码图片
    25         codeimg=response.content#保存为二进制
    26         print(codeimg,'codeimg')
    27         with open('code.png','wb') as f:#保存为PNG图片
    28             f.write(codeimg)
    29         post_dict={ #登陆时要提交的数据
    30             'source':'index_nav',
    31             'form_email':user,#用户名
    32             'form_password':pwd,#密码
    33             'captcha-solution':input('请输入验证码:'),#输入你保存的PNG图片中的验证码
    34              'captcha-id':catpchaId
    35         }
    36         response = requests.post(#要登陆的网址
    37              url="https://accounts.douban.com/login",
    38              data=post_dict,
    39             headers=headers
    40          )
    41         print(response.url,'url')
    42         # #print(response.text,'text')
    43         # cookie_dict=response.cookies.get_dict()#产生的cookie
    44         # print(cookie_dict,'cookie_dict')
    45         if '莫柔落切的帐号' in response.text:
    46             print('登录成功')
    47         else:
    48             print('登录失败,重新登录!')
    49             login()
    50             return
    51     def comment(mid):#评论
    52         data={#评论的表单数据格式
    53             'ck':'xVds',
    54             'comment':'我来留个名',
    55             'foldcollect':'F',
    56             'interest':'collect',
    57             'rating':'',
    58             'tags':'123'
    59         }
    60         #进行提交
    61         response=requests.post('https://movie.douban.com/j/subject/%s/interest'%mid,data=data,headers=headers)
    62         print(response.text,'comment.text')
    63     def getMoveId():#电影的ID  排行榜
    64         response=requests.get('https://movie.douban.com/ithil_j/activity/movie_annual2017/widget/20',
    65                                 headers=headers)
    66         print(response.text)
    67         result=response.json()#进行转换为文本
    68 
    69         print(type(result),'类型')
    70         return  result['res']['subjects']#返回所要的数据
    71 
    72     login()
    73     for i in getMoveId():#循环电影ID列表
    74         print(i)
    75         comment(i['id'])#进行短评
  • 相关阅读:
    基于silverlight 实现的文件浏览器
    基于silerlight for embedd 视频播放器的之一的问题
    DSHOW_IVideoWindow的不解
    图片浏览开发初步的问题
    MOSS 修改计算机名称
    MOSS中显示登录用户在AD中的全名
    MOSS工作流任务权限控制
    RMS配置
    修改AD密码的方法
    MOSS母板页中的PlaceHolder
  • 原文地址:https://www.cnblogs.com/uge3/p/8809044.html
Copyright © 2011-2022 走看看