• 爬虫----登录及点赞


    基本操作:

      url指定内容获取到:

        -发送http请求,

        -基于正则表达式获取内容

      

      import requests

      from bs4 import BeautifulSoup

      response = requests.get("url")

      response.text

      obj = beautifulsoup(requests.text)

      标签对象 = obj.find("a")    #找到匹配成功的第一个标签

      标签对象.find()

      [标签对象,标签对象] = obj.find_all("a")    #找到匹配成功的所有的标签,他返回的是列表,列表里是对象

    简单的拿取:

      import requests

      from bs4 import BeautifulSoup

      response = requests.get("url")   #用get请求的方式获取到url的整个页面

       response.encoding = "gbk"      #对获取的url可能存在的字符编码的问题进行编码

      soup = BeautifulSoup(response.text,"html.parser")      #html.parser是Python内部的解析器,将内容解析成一个对象。

      tag = soup.find(name="指定的标签")     #优先找id   如何没有id,可以用attrs={ }     例如:attrs={"class":"标签"}   标签名=“属性”

                              如果想用class的话,可以是"class_",因为class是关键字,不用直接用。

      s = soup.find(name="xx")

      s1 = soup.find_all(name="xx")

      s和s1的区别是s是标签对象,而s1是列表形式的标签对象

      h3 = tag.find(指定标签)

      print(h3)

    拿取页面的详细信息:拿标题,简介,超链接,图片  

      import requests

      from bs4 import BeautifulSoup

      response = requests.get("http://www.autohome.com.cn/news/")
      response.encoding = "gbk"
      soup = BeautifulSoup(response.text,"html.parser")

      li_list = soup.find(id="auto-channel-lazyload-article").find_all(name="li")
      for li in li_list:
    title = li.find("h3")
    if not title:
      continue
    summary = li.find("p").text #简介

    # li.find("a").attrs{"href"} # 是字典。获取标签的所有的属性
    url = li.find("a").get("href") # 找到a标签后,获取href的属性。
    img = li.find("img").get("src") # 找到a标签后,获取src的属性。
    print(title,type(title),title.text,img,summary,url) # title.text就是标题文本
    print("=============================================")

    #下载图片
    res = requests.get(img)
    file_name = "%s.jpg" %(title)
    with open(file_name,"wb") as f:
    f.write(res.content)

     

    登录:问题点(cookie)

       流程:1.先get下载页面,获取csrf token

          2.发送post请求,填写用户名密码

          3.如果有csef token 就要获取到token

            -如果登录成功,一定会有cookie

            -cookie的携带有两种模式:区别,发post请求登录成功后再发cookie  有的网站是在第一次get请求时就将cookie发了,但是这个cookie在后台没有被授权,

               --A:发送get请求获取到页面,提交用户名和密码后,会获取cookie,以后再发请求,带着这个cookie去就行了

               --B:?

      

    import requests
    from bs4 import BeautifulSoup

    #获取token
    r1 = requests.get("https://github.com/login") #获取登录页面
    s1 = BeautifulSoup(r1.text,"html.parser")
    token = s1.find(name="input",attrs={"name":"authenticity_token"}).get("value") #获取input标签,和属性
    r1_cookie_dict = r1.cookies.get_dict() #获取cookie
    print(token)



    #用户名密码token发送到服务器,以post形式发


    r2 = requests.post(
    "https://github.com/session",
    data={
    "utf8":"✔️",
    "authenticity_token":"token",
    "login":"wangzhe9251@163.com",
    "password":"wangzhe9251",
    "commit":"Sign in"

    },
    cookies=r1_cookie_dict
    )
    print(r2.text)


    #如果r2发送成功,会带有cookie
    r2_cookie_dict = r2.cookies.get_dict() # 一个字典形式的cookie
    cookie_dict = {}
    cookie_dict.update(r1_cookie_dict)
    cookie_dict.update(r2_cookie_dict)

    #在获取cookie后,就可以反复的登录了

    r3 = requests.get(
    url="https://github.com/settings/emails",
    cookies=cookie_dict #带有cookie的标识,就可以访问了
    )
    print(r3.text)

      

    点赞:

     import requests

    from bs4 import BeautifulSoup

    #获取cookie
    r0 = requests.get("http://dig.chouti.com/")
    r0_cookie_dict = r0.cookies.get_dict()

    #获取用户名和密码cookie
    r1 = requests.post(
    "http://dig.chouti.com/login",
    data={
    "phone":"86XXXXXXXXXXX",
    "password":"woshiniba",
    "oneMonth":"1"
    },
    cookies = r0_cookie_dict
    )

    print(r1.text)
    print(r1.cookies.get_dict())
    r1_cookie_dict = r1.cookies.get_dict()

    #gpsd 和update分别都可以起到将cookie整合的作用,是所有可能的cookie组成一个字典。
    cookie_dict = {# "gpsd":r0_cookie_dict["gpsd"]
    }
    cookie_dict.update(r0_cookie_dict)
    cookie_dict.update(r1_cookie_dict)

    #点赞 要被点赞的链接
    r2 = requests.post(
    "http://dig.chouti.com/link/vote?linksId=13938646",cookies = r1_cookie_dict)

    print(r2)

     

        

  • 相关阅读:
    浅析全球电信运营商排名
    《时空骇客》中的远距传物理论和虫洞理论
    优秀的商业计划书一定会“动”
    手机搜索的商业模式
    手机网游排行榜
    手机按键对应表
    "Avatar模式"透析
    百度数据暗示无线互联网将以个人为中心
    一种精神致加西亚的信
    手机定位技术将成社交网络催化剂
  • 原文地址:https://www.cnblogs.com/george92/p/7356195.html
Copyright © 2020-2023  润新知