02.Pythonリクエストモジュールの詳細な説明

1.リクエストのインストール

pip install requests

2.捜狗のホームページとストアをクロールするリクエスト

1.request.getメソッド

requests.get(url,params,kwargs)

url:リクエストアドレス

params:パラメータ

2.コード

import requests
if __name__ == "__main__":
    #step_1:指定url
    url = 'https://www.sogou.com/'
    #step_2:发起请求
    #get方法会返回一个响应对象
    response = requests.get(url=url)
    #step_3:获取响应数据.text返回的是字符串形式的响应数据
    page_text = response.text
    print(page_text)
    #step_4:持久化存储
    with open('./sogou.html','w',encoding='utf-8') as fp:
        fp.write(page_text)
    print('爬取数据结束!!!')

3.文字化けした問題

Responseは、デフォルトでiso-8859-1エンコーディングを使用してメッセージ本文をエンコードし、データをクライアントに送信します。エンコード形式が指定されていない場合、コードが文字化けすることがあります。使用するエンコード形式はどれですか?クロールするWebサイトを開くだけで済みます

ここに画像の説明を挿入します

Sogouホームページがutf-8エンコード形式を使用していることがわかります。次に、エンコード形式を指定する必要があります。

response.encoding = "utf-8"

残りのウェブサイトは同じです。

3.リクエストは捜狗検索データを収集します

1.UAカモフラージュ

UA:ユーザーエージェント(キャリアIDの要求)
UA検出:ポータルサーバーは、対応する要求のキャリアIDを検出します。要求されたキャリアIDが特定のブラウザーとして検出された場合、
その要求は通常の要求です。ただし、要求されたキャリアIDが特定のブラウザーに基づいていないことが検出された場合、その要求
は異常な要求(クローラー)であり、サーバーは要求を拒否する可能性があります。

UAの偽装:クローラーの対応するリクエストキャリアIDを特定のブラウザーに偽装させます

2.データをクロールします

import requests
if __name__ == "__main__":
    #UA伪装:将对应的User-Agent封装到一个字典中
    headers = {
    
    
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
    }
    url = 'https://www.sogou.com/web'
    #处理url携带的参数:封装到字典中
    kw = input('enter a word:')
    param = {
    
    
        'query':kw
    }
    #对指定的url发起的请求对应的url是携带参数的,并且请求过程中处理了参数
    response = requests.get(url=url,params=param,headers=headers)
		response.encoding = "utf-8"
    page_text = response.text
    fileName = kw+'.html'
    with open(fileName,'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print(fileName,'保存成功!!!')

三。百度翻訳をクラック

要件:翻訳するテキストを入力し、翻訳結果をjson形式で返し、ローカルに保存します

import requests
import json
if __name__ == "__main__":
    #1.指定url
    post_url = 'https://fanyi.baidu.com/sug'
    #2.进行UA伪装
    headers = {
    
    
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'

    }
    #3.post请求参数处理(同get请求一致)
    word = input('enter a word:')
    data = {
    
    
        'kw':word
    }
    #4.请求发送
    response = requests.post(url=post_url,data=data,headers=headers)
    #5.获取响应数据:json()方法返回的是obj(如果确认响应数据是json类型的,才可以使用json())
    dic_obj = response.json()

    #持久化存储
    fileName = word+'.json'
    fp = open(fileName,'w',encoding='utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)

    print('over!!!')

4.Douban映画分類ランキングリストhttps://movie.douban.com/で映画の詳細データをクロールします。

import requests
import json
if __name__ == "__main__":
    url = 'https://movie.douban.com/j/chart/top_list'
    param = {
        'type': '24',
        'interval_id': '100:90',
        'action':'',
        'start': '0',#从库中的第几部电影去取
        'limit': '20',#一次取出的个数
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'

    }
    response = requests.get(url=url,params=param,headers=headers)

    list_data = response.json()

    fp = open('./douban.json','w',encoding='utf-8')
    json.dump(list_data,fp=fp,ensure_ascii=False)
    print('over!!!')

おすすめ

転載: blog.csdn.net/qq_40837794/article/details/109604680