ルームメイトがインスタントラーメンを食べたとき、私は数十行のPythonコードを含む何千もの携帯電話の壁紙をダウンロードしました

男性の同胞の大多数にとって、モバイルの壁紙やコンピューターの壁紙は見栄えがするのが好きではありませんか?それらの多くは数十行のコードで数分でダウンロードでき、使い切ることはできません。さあ、 それを示す!


1.何か良いことをしたいのなら、まずその道具を研ぐ必要があります

1.開発環境

ここでは、Python 2でない限り、Python環境を使用します。エディターにはpycharmを使用します。バージョン21には便利なツールがたくさんあります。それを使用する人は誰でも、詳細には触れません。

公式ウェブサイトからダウンロードできるソフトウェアがない場合は、記事の左側または下部にあるコードをスキャンして取得することもできます。また、pycharmを永続的に使用する方法があります。

2.サードパーティモジュール

requests 
parsel 

requestsはデータリクエストモジュールであり、parselはデータを抽出して解析するためのモジュールであり、pipによって直接インストールできます。

3.モジュールと問題をインストールします

  • Pythonサードパーティモジュールをインストールする場合:
    1. win + R cmdと入力します[OK]をクリックし、インストールコマンドを入力しますpip install module name(pip install requests)Enter
    2. pycharmのターミナルをクリックしてインストールコマンドを入力します
  • インストール失敗の理由:
    • 失敗1:pipは内部コマンドではありません
      解決策:環境変数を設定します

    • 失敗2:多くの赤いレポートがあります(読み取りタイムアウト)
      解決策:ネットワークリンクがタイムアウトしたため、ミラーソースを切り替える必要があります
      Tsinghua:https://pypi.tuna.tsinghua.edu.cn/simpleAlibaba
      cloud: http:// mirrors .aliyun.com / pypi / simple /
      中国科学技術大学https://pypi.mirrors.ustc.edu.cn/simple/Huazhong
      科学技術大学:http://pypi。 hustunique.com/Shandong
      University of Technology:http:// pypi.sdutlinux.org/
      Douban: http:
      //pypi.douban.com/simple/例:pip3 install -i https://pypi.doubanio.com/シンプル/モジュール名

    • 失敗3:cmdは、インストールされているか、インストールは成功しているが、それでもpycharmにインポートできないことを示しています
      解決策:複数のPythonバージョンがインストールされている可能性があります(anacondaまたはpythonでインストール
      できます)。設定されていないpycharmpythonインタープリターに入れてください

2.プロセス

1.データソース分析
クロールWebサイトとは何ですか。また、Webサイトから取得するデータコンテンツの種類。
たとえば、画像のクロール、画像からの
分析、開発者ツールによるパケットキャプチャ分析の実行、およびいくつかのパラメーターの比較必要な画像のURLアドレスの;

2.クローラーコードを実装する手順:
1)リクエストを送信し、分析から取得したURLアドレスのリクエストを送信します

  • URLをリクエスト
  • Requestメソッド
    Requestヘッダーパラメーター>>>偽装はPythonコードをブラウザー(クライアント)に偽装して要求を送信できます
    。偽装しないとどうなりますか>>>必要なデータが返されません。

2)データを取得し、応答サーバーから返された応答データを取得します
。3)データを解析し、画像のURLアドレスと必要なデータコンテンツの画像タイトルを抽出します
。4)データを保存し、保存します。ローカルの画像データ。

3.コード表示

1.モジュールをインポートします

import requests
import parsel 

2.リクエストを送信します

  • ヘッダー要求ヘッダーパラメーターは、開発者ツールで直接コピーでき、その後にヘッダーディクショナリデータ型、キーと値のペアが続きます
  • user-agent:ユーザーエージェントはブラウザの基本IDを表します
  • cookie:ユーザー情報。ユーザーがログインアカウントを持っているかどうかを検出します
for page in range(2, 11):
    url = f'https://sj..com/woman/{page}.html'
    headers = {
    
    
        'cookie': 't=f2cf055ce8713058cbfdbd1561c38e86; r=1281; Hm_lvt_86200d30c9967d7eda64933a74748bac=1645625923,1646892448; Hm_lpvt_86200d30c9967d7eda64933a74748bac=1646894465',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)   #  <Response [200]> 返回响应对象 200状态码标识请求成功

3.データを取得する

サーバーから返されたデータの内容を取得し、応答オブジェクトのテキストデータを取得します。

print(response.text)

文字列データはデータコンテンツを返します。これは、開発者ツールで見たものとは異なります。つまり、サーバーによってクローラーとして認識されるため、データは返されません。

4.データを解析します

cssセレクターのxpathreは、3つの解析方法すべてで使用して、最適なものを選択できます。

cssセレクター:タグ属性に基づいてデータコンテンツを抽出します

response.textを取得するためにデータ型をセレクターオブジェクトに変換します

attr()属性selector.egeli_pic_li .egeli_pic_dl dd a

imgはポジショニングタグです。どのタグかを教えてください

img :: attr(src)imgタグでsrc属性データを取得しますgetall()すべてのタグコンテンツデータを取得しますリストデータ型を返します

selector = parsel.Selector(response.text)
src = selector.css('.egeli_pic_li .egeli_pic_dl dd a img::attr(src)').getall()
alt = selector.css('.egeli_pic_li .egeli_pic_dl dd a img::attr(alt)').getall()
for img_url, title in zip(src, alt):
    img_url = img_url.replace('edpic_360_360', 'edpic_source')

4.データを保存します

img_content = requests.get(url=img_url, headers=headers).content  # 获取二进制数据内容
with open('img\\' + title + '.jpg', mode='wb') as f:
    f.write(img_content)
print(img_url, title)

第四に、エフェクト表示

壁紙には這う効果
で十分です。
ここに画像の説明を挿入ブラザーズ、記事を読むのにうんざりしています。少し運動をしてください。好きで好きになるのを手伝ってください。次回はもっと面白くなります。

おすすめ

転載: blog.csdn.net/fei347795790/article/details/123482652
おすすめ