zoukankan      html  css  js  c++  java
  • 爬虫基础(未整理)

    get 模式下

    1、用urllib模块

    form urllib import request,parse

    URL=“http;//www.baidu.com/s?”

    wd= input("input your keyword")

    qs={“wd”:wd}  

    qs = parse.urllencode(qs)              # 第一、給输入的lkeyword从中文编码成能识别的str模式

    rsp = urllib.request.urlopen(URL)   #第二、打开网页

    html = rsp.read()         #第三,读取html 数据

    new_html = html.decode()         #第四,解码读取的数据,括号里面选填解码类型,如utf-8

    print(new_html)           #最后打印html{

    【注意】前提步骤,有url,用户输入的keyword并且以dict模式贮存,再对keyword进行编码。

        开始步骤 :打开网页(urlopen(url)),

             读取数据(read())

              数据解码(decode())

            打印数据

    2、用request库

     import request

    URL=“http;//www.baidu.com/s?”

    wd= input("input your keyword")

    qs={“wd”:wd}  

    headers={"xxx":"xxxx"}

    rsp = request.get(url,params=qs,headers = headers)  

    html = rep.text

    print(html)

    【注意】,对比urllib库,减少了很多麻烦,不用编码,再打开,再解码的步骤

    post模式下

    用到urllib模块,josn

    form urllib import request,parse

    import json

    url=“http://fanyi.baidu.com/sug”

    wd= input("input your keyword")

    qs={“wd”:wd} 

    qs = parse.urllencode(qs).encode(utf-8)    #以utf-8的模式进行编码,结果是srt变成bytes类型

    rsp = reques.urlopen(url,data=qs)    #打开网站,data是刚刚输入转换的编码数据

    json_data =rsp.read.().dacode("utf-8")  #读取数据和解码数据

    json_data = json.loads(json_data)    #,把json字符串转换成字典,数据是json格式的str模式,读取不了,将str变成dict格式就可以读取

    for i,b in json_data["data"]      #遍历输出字典内容

      print(i,b)

    2、用request库

    import json

    import request

    url=“http://fanyi.baidu.com/sug”

    wd= input("input your keyword")

    qs={“wd”:wd} 

    rsp = request.post(url,data= qs,headers=headers)

    print(rsp.json())

    【request 比较简单,不用对wd的值进行bytes转码,最后输出是要将结果进行json解析】  

     【注意】

    get、post差别在于,get只要在url后面加入转码后的内容既可以跳转到需要的页面

             post,不存在get直接在url后面加入内容,而是加入一个data = keyword的 转码后数据跳转页面,并且通过utf-8解码后内容是json的字符串格式,要变成dict模式才能得到数据。

    post2。

      urlopen提供能力不足

      模拟http信息,模范浏览器能力不足

    为了更多的设置请求信息,单纯通过urlopen不好用

    -利用request.Request类

    orm urllib import request,parse

    import json

    url=“http://fanyi.baidu.com/sug”

    wd= input("input your keyword")

    qs={“wd”:wd} 

    qs = parse.urllencode(qs).encode(utf-8)

    headers = {“Content,Length”:len(qs)}

    rq = request.Request(url=url,data=qs,headers=headers)    #构造一个个Request的类,参数url,data,headers,

    rsp = reques.urlopen(rq)   

    json_data =rsp.read.().dacode("utf-8")  

    json_data = json.loads(json_data)    

    for i,b in json_data["data"]      

    ERROR

    URLError

        -没网络

        -服务器链接失败

        是OSError的子类

    import urllib import erquese ,error

      url="http://www.baiiiiiidu.com"

      try:

        req =request.Request(url)

        rsp =  request.urlopen(req)

        html = rsp.read().decode()

      except error.URLError as e :

        print(e)

      except Exception as e :

        print(e)

    HTTPError,

    是URLError的子类

      url="http://www.vnetbfmnqmvu.com"

      try:

        req =request.Request(url)

        rsp =  request.urlopen(req)

        html = rsp.read().decode()

      except error HTTPError as e :

        print(e)

      except error.URLError as e :

        print(e)

      except Exception as e :

        print(e)

    【两者区别】HTTPError、:返回错误码400以上,引发httperror

          URLError:一般网络出问题

        关系父-子:oserror、urlerror、httperror  

    UserAgent:身份隐藏,简称UA,属于headers的 一部分,服务器通过UA识别是否爬虫

        常见的UA值

          F12.NETWORD.查看UA

      url=“http:www.baidu.com”

    form urllib import request ,error

      try:

        headers={}

        headers["User-Agent"]=UAxxxxxxxxx        # User-Agen不能拼错

        req = request.Request(url,headers = headers)

        html = req.read().decode()

        pinnt(html)

  • 相关阅读:
    东边日出西边雨
    ZooKeeper学习(一)了解ZooKeeper
    linux学习(七)文件打包和压缩命令
    linux学习(六)Linux yum 命令
    linux学习(五)Linux 文件与目录管理
    linux学习(四)Linux 文件基本属性
    linux学习(三)Linux 系统目录结构
    linux学习(二)认识Linux
    linux学习(一)认识阿里云
    多线程实战【面试题形式】
  • 原文地址:https://www.cnblogs.com/simplecat/p/11389427.html
Copyright © 2011-2022 走看看