自動テストにPythonを使用することについて話す

Pythonとは何ですか?

ここに写真の説明を挿入

  • Pythonは、動的なデータ型を備えた、解釈されたオブジェクト指向の高レベルのプログラミング言語です。
  • Pythonは1989年の終わりにGuidovan Rossumによって発明され、最初の公開リリースは1991年にリリースされました。
  • Perl言語と同様に、PythonソースコードもGPL(GNU General Public License)契約に従います。
  • 2020年1月1日に、Python2の更新が停止されることが正式に発表されました。
  • Python 2.7は、Python2.xの最後のバージョンであると判断されました。

さまざまな言語で書かれたHelloWorldプログラムの比較

  • C ++バージョン:
#include<iostream>
using namespace std;
int main(){
    
    
	cout << "Hello World!" << endl;
}
  • Javaバージョン:
package test;
    
public class HelloWord{
    
    
	public static void main(String[] args){
    
    
		System.out.println("Hello World!");
	}
}
  • Pythonバージョン:
print("Hello World!")

Pythonのコード量が最も少なく、Pythonの目的は単純であることがわかります。

Pythonの「緩み」の使い方

  • 市場に出回っている多くのオフィスソフトウェアは多くの機能を備えていますが、多かれ少なかれ「柔軟性がない」と批判されています

  • 市場に出回っている多くのPythonは、マシンが繰り返しに最適であるため、自動化されたオフィスの概念について再び話します。しかし、人生では、多くのタスクが繰り返されます。マシンに任せてみませんか?

  • Pythonが日常業務のほとんどを完了できる理由は、一方ではPythonの簡略化された構文、もう一方ではPythonの豊富なサードパーティライブラリによるものです。これらのライブラリは非常に強力であり、単純なPSを自動的に完了するのに役立ちます。仕事。

  • 今日は主にPythonでクローラーとデータETLを紹介します

クローラーとは何ですか?

ここに写真の説明を挿入

  • ウェブクローラーの技術は最近登場しませんでしたが、最近人気が出てきました。
  • 爬虫類、この名前がなじみのないものだと聞いてはいけません。実際、誰もがこの名前に触れています。私たちが日常生活で触れているのはバイドゥです。実際には巨大な爬虫類です。
  • クローラーは、その名前の意味と同じように、インターネット全体を巨大なスパイダーWebとして想像できます。このスパイダーWebでは、多くのバグ(つまり、必要なデータリソース)で覆われています。クローラーは、このWeb上の1つにすぎません。クロールスパイダーは、プログラミングを通じて、このWebで必要なデータを見つけて、収集することができます。

クローラーの世界に正式に参入するときは、まだフロントエンドの知識が少し必要です。

ブラウザがウェブサイトを閲覧するとどうなりますか?

  1. リクエストの開始
    HTTPライブラリを介してターゲットサイトへのリクエストを開始します。つまり、追加のヘッダーやその他の情報を含むことができるリクエストを送信し、サーバーが応答するのを待ちます。リクエストには多くの種類があります(GET、POST、DELETE、UPDATE、PUT ...)最も一般的に使用されますまたは最初の2つ
  2. 応答コンテンツの取得
    サーバーが正常に応答できる場合、応答を取得します。この応答のコンテンツは、取得するページのコンテンツです。タイプは、HTML、Json、およびバイナリデータ(画像データなど)です。
  3. コンテンツを解析して表示します。
    サーバーからの応答を受信した、フロントエンドはjsコードを介して返された本文を解析し、設定されたルールに従って表示するために解析されたデータをページにロードします。

リクエストとは何ですか?

1.リクエストメソッド
には、HEAD、PUT、DELETEなどに加えて、主にGETとPOSTが含まれます。
ここに写真の説明を挿入

2. Webページドキュメント、画像、ビデオなど、プロセス全体を通じてURLURLユニフォームリソースロケーターを要求
することは、URLによって一意に決定できます。
ここに写真の説明を挿入

3.リクエストヘッダーに
は、User-Agent、ホスト、Cookie、その他の情報など、リクエストのヘッダー情報が含まれています。
ここに写真の説明を挿入

4.リクエスト本文リクエストに
含まれる追加データは、フォーム送信時のフォームデータなど、フォーム送信時に送信されるデータです。
ここに写真の説明を挿入

Responseには何が含まれていますか?

1.応答ステータス
成功の場合は200、ジャンプが301、ページが見つからない404、サーバーエラーが502など、さまざまな応答ステータスがあります
。2。コンテンツタイプ、コンテンツの長さ、サーバー情報、Cookie設定などの応答ヘッダー

ここに写真の説明を挿入

3.応答本文
主要部分には、WebページのHTML、画像のバイナリデータなど、要求されたリソースのコンテンツが含まれています。
ここに写真の説明を挿入

簡単なクローラーを開始する

ステップ1HTTPリクエストをシミュレートする

  • 実際、クローラーの動作メカニズムの本質は、コードを介してHTTP要求のプロセスを人為的にシミュレートすることです。
  • この要件はPythonで簡単に実現できます。Python3には(requests、urllib3 ...)を実現する必要がありますが、高度にカプセル化されており、使いやすいため、前者を使用することをお勧めします。
# 导入requests 库
import requests

# 调用requests的get方法,对 www.baidu.com 发起一个 GET 请求
response = requests.get("http://www.baidu.com")

# 输出响应体信息
print("响应码:",response.status_code)
print("响应体:",response.text)

ステップ2リクエストヘッダーを追加する

  • 現在、多くのWebサイトでクロール防止処理が行われているため、クローラーが多すぎると他の人のサーバーに余分な圧力がかかるため、アクセスするブラウザーになりすます必要があります。原則として、User-Agentを作成します。
# 导入requests 库
import requests

# 设置headers
my_headers={
    
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}

# 调用requests的get方法,对 www.baidu.com 发起一个 GET 请求
response = requests.get("http://www.baidu.com",headers=my_headers)

# 输出响应体信息
print("响应码:",response.status_code)
print("响应体:",response.text)

このコードを実行すると、今回返された応答本文のコンテンツが前のコンテンツよりも明らかに多いことがわかります。Baiduのサーバーがあなたをロボット訪問として識別したのはあなたが最後であるはずなので、あなたはあなたに戻るために多くのコンテンツをブロックしました。レスポンスボディ

情報処理

  • サーバーから返されるデータ形式は常に不十分であるため、必要なデータを抽出するには、データを自分で標準化する必要があります。

JSONデータ処理

  • 多くの場合、サーバー側で取得したデータはJSON形式で返されます。PythonでのJSONの処理は非常に便利です。JAVAのような特定のエンティティで解析する必要はありません。Pythonは動的に型指定された言語であり、JSONを解析するのに非常に便利です。 、JSON文字列をPythonの辞書に解析できます(dict)
# 导入处理JSON的库
import json

test_json_str = """
{
	"people": [{
		"school": "ttt",
		"name": "zs",
		"age": 15
	}, {
		"school": "du",
		"name": "ls",
		"age": 17
	}, {
		"school": "rw",
		"name": "ww",
		"age": 18
	}],
	"status": "OK"
}
"""

json_ = json.loads(test_json_str)

print("状态:",json_["status"])
print("人员: ",json_["people"])
print("第一个人的学校名:",json_["people"][0]["school"])

構造化データ処理

  • 構造化データの場合、pythonには、パンダと呼ばれる、それを処理できる非常に強力なライブラリもあります。
import pandas as pd

data_json = {
    
    
"name":["张三","李四","王五"],
"age": [18,19,17],
"math":[120,112,99],
"english":[95,89,120],
"chinese":[110,102,113]
}

sc_df = pd.DataFrame(data_json)
# 选取英语没有及格的学生
print(sc_df[sc_df["english"] < 90])

Seleniumは強力なWeb自動化テストツールです

セレニウムとは何ですか?

Seleniumは、Webアプリケーションテスト用のツールです。Seleniumテストは、実際のユーザーが操作しているように、ブラウザーで直接実行されます。サポートされているブラウザには、IE(7、8、9、10、11)、Mozilla Firefox、Safari、Google Chrome、Operaなどがあります。このツールの主な機能は次のとおりです。ブラウザとの互換性をテストする-アプリケーションをテストして、さまざまなブラウザやオペレーティングシステムで正常に動作するかどうかを確認します。システム機能のテスト-回帰テストを作成して、ソフトウェア機能とユーザー要件を確認します。

pythonのSeleniumライブラリを使用してブラウザを操作します

step1Webページを開く

# 导入web驱动的库
from selenium import webdriver
# 创建一个Chrome浏览器的驱动对象
browser = webdriver.Chrome()
# 在浏览器中输入百度的地址,访问百度的网页
browser.get("http://www.baidu.com")

step2自動検索用語を実現する

# 导入web驱动的库
from selenium import webdriver
# 创建一个Chrome浏览器的驱动对象
browser = webdriver.Chrome()
# 在浏览器中输入百度的地址,访问百度的网页
browser.get("http://www.baidu.com")
# 定位到输入搜索关键字的标签,并填入想要搜索的词条
browser.find_element_by_xpath('//*[@id="kw"]').send_keys("爬虫")
# 点击搜索按钮
browser.find_element_by_xpath('//*[@id="su"]').click()

step3はWebページのソースコードを表示します

# 导入web驱动的库
from selenium import webdriver
# 创建一个Chrome浏览器的驱动对象
browser = webdriver.Chrome()
# 在浏览器中输入百度的地址,访问百度的网页
browser.get("http://www.baidu.com")
# 打印网页源码
print(browser.page_source)
```python
# 导入web驱动的库
from selenium import webdriver
# 创建一个Chrome浏览器的驱动对象
browser = webdriver.Chrome()
# 在浏览器中输入百度的地址,访问百度的网页
browser.get("http://www.baidu.com")
# 打印网页源码
print(browser.page_source)

おすすめ

転載: blog.csdn.net/qq_42359956/article/details/109265547