python爬虫類ネットワーク要求事例詳細


前の基礎と爬虫類の基礎を勉強してから、ネットを習い始めます。
まず来てみます。urllib
urllibの紹介
urllibはPythonが持参した標準ライブラリの中で、ネットワーク要求用のライブラリです。インストールする必要がなく、直接参照すればいいです。
主に爬虫類の開発に使われます。APIデータの取得とテストに使われます。
urllibライブラリの四大モジュール:
  • urllib.request:url
  • を開くために使用されます。
  • urllib.error:提出された例外を含み、urllib.request
  • urllib.parse:解析用url
  • urllib.robotparser:解析用robots.txt
  • ケース
    
    #   :     
    #     :2021/4/5/0005 8:23
    import urllib.parse
    kw={'wd':"     "}
    result=urllib.parse.urlencode(kw)
    print(result)
    #  
    res=urllib.parse.unquote(result)
    print(res)
    在这里插入图片描述
    ブラウザではインターネットの老辛を非中国語に変えています。
    ブラウザでインターネットを検索して、ブラウズ中のコピーをします。
    在这里插入图片描述
    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E 4%BA% 92%E 8%81%94%E 7%BD%91%E 8%80%E 8%8%8%E 8%BE%9 B&fenlei=256&oq=%25 E 7%258 E%25 E 5%259 B%259 B%252&rsvpq=aa 5 b 8079001 eec 3 e&rsv_t=9 d 1 VMqcHzdaH 7 l 2 O 1 E 8 kMBcAS 8 OfSAGW HGWHgUYs foVtGN BNVzHRatL 1 TU&rqlang=cn&rsv_ベンダー=1&rsv_dl=tb&rsv_btype=t&input=3542&rsv_sug 2=0&rsv_sug 4=3542
    よく見てください。太めの部分はコードから出力されたwdの結果ですか?
    要求を送信する
  •  urllib.requestライブラリ
  • 模擬ブラウザでhttp要求を開始し、要求の応答結果を取得する。
  • urllib.request.urlopenの構文フォーマット:
  • urlopen(url,data=None)*,cafile=None,capath=None,cadefault=False,context=None
    パラメータの説明:
    url:strタイプのアドレス、つまり訪問するURL、例えばhttps://www/baidu.com
    data:標準値はNoneです。
    urlopen:関数はhttp.client.HTTPResonseオブジェクトを返します。
    コードケース
    get要求
    
    #   :     
    #     :2021/4/5/0005 8:23
    import urllib.request
    url="http://www.geekyunwei.com/"
    resp=urllib.request.urlopen(url)
    html=resp.read().decode('utf-8')  # bytes  utf-8  
    print(html)
    なぜ、utf-8に変更したのですか?gbkではなく、ここでウェブページのチェックページのソースコードには何が含まれていますか?
    在这里插入图片描述
    要求-Request要求を送信します。
    私たちは豆の花びらを取りに行きます。
    
    #   :     
    #     :2021/4/5/0005 8:23
    import urllib.request
    
    url="https://movie.douban.com/"
    
    resp=urllib.request.urlopen(url)
    print(resp)
    豆瓣はアンチ爬虫術があります。直接418エラーを報告します。
    在这里插入图片描述
    このような私たちには偽装要求ヘッドが必要です。
    私たちはホームページの中のuser-Agentを見つけました。
    
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400
    
    #   :     
    #     :2021/4/5/0005 8:23
    import urllib.request
    
    url="https://movie.douban.com/"
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
    
    #      
    req=urllib.request.Request(url,headers=headers)
    #  urlopen    
    resp=urllib.request.urlopen(req)
    #          
    html=resp.read().decode('utf-8')
    print(html)
    これでPythonを使ってブラウザに偽装してデータを取得しました。
    IPプロキシ
    openerの使用、自分のopenerを構築して要求を送ります。
    
    #   :     
    #     :2021/4/5/0005 8:23
    import urllib.request
    url="https://www.baidu.com/"
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
    #      
    
    req=urllib.request.Request(url,headers=headers)
    
    opener=urllib.request.build_opener()
    resp=opener.open(req)
    print(resp.read().decode())
    もしあなたが要求を送信し続けたら、彼はあなたにIPを禁止する可能性があります。だから、私達はしばらくの間にIPエージェントを交換します。
    IPエージェントの分類:
  • 透明エージェント:ターゲットサイトはあなたがプロキシを使っていることを知っています。そして、あなたのソースIPアドレスを知っています。
  • 匿名代理店:ウェブサイトはあなたがプロキシを使ったことを知っていますが、あなたのソースip
  • は分かりません。
  • 高隠匿代理店:これは一番安全な方法です。カタログサイトは代理店
  • を使っていますか?
    ipエージェントの方式:
    無料:https://www.xicidaili.com/nn/
    有料:象の代理、高速代理、ゴマの代理
    
    #   :     
    #     :2021/4/5/0005 8:23
    from urllib.request import build_opener
    from urllib.request import ProxyHandler
    proxy=ProxyHandler({'https':'222.184.90.241:4278'})
    
    opener=build_opener(proxy)
    
    url='https://www.baidu.com/'
    resp=opener.open(url)
    print(resp.read().decode('utf-8'))
    Baiduは実際には反対に登ることができます。たとえ高い隠れ家の代理でも100%の回り道はできません。
    クッキーを使う
    なぜクッキーを使いますか?
    cookieを使うのは主にhttpの無状態性を解決するためです。
    使用手順:
  • 实例化モザイクCookie jar(cookieを保存)
  • は、handlerオブジェクト(cookieのプロセッサ)
  • を作成する。
  • openerオブジェクト
  • を作成します。
  • ウェブページを開く(送信要求取得応答)
  • クッキーファイル
  • を保存します。
    実例:Baiduのシールを取得したクッキーを保存します。
    
    import urllib.request
    from http import cookiejar
    filename='cookie.txt'
    def get_cookie():
        cookie=cookiejar.MozillaCookieJar(filename)
        #  handler  
    
        handler=urllib.request.HTTPCookieProcessor(cookie)
        opener=urllib.request.build_opener((handler))
        #    
        url='https://tieba.baidu.com/f?kw=python3&fr=index'
    
        resp=opener.open(url)
        #   cookie
        cookie.save()
    #    
    def use_cookie():
        #   MozillaCookieJar
        cookie=cookiejar.MozillaCookieJar()
        #  cookie  
        cookie.load(filename)
        print(cookie)
    if __name__=='__main--':
        use_cookie()
        #get_cookie()
    異常処理
    私たちはアクセスできないウェブサイトに登って異常を捕まえます。
    
    #   :     
    #     :2021/4/6/0006 7:38
    
    import urllib.request
    import urllib.error
    url='https://www.google.com'
    try:
        resp=urllib.request.urlopen(url)
    except urllib.error.URLError as e:
        print(e.reason)
    異常捕獲が見られます。
    在这里插入图片描述
    ネットの要求はもう勉強し終わりました。後はよく使う倉庫をいくつか勉強して、データの取得ができます。
    ここでは、python爬虫類シリーズのネットワーク要求例について詳しく説明した文章を紹介します。python爬虫類ネットワークの要請内容については、以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。