Pythonは宝を洗う商品の情報の欄の実現を登ります。
一、関連知識点
1.1、Selenium
Seleniumは強力なオープンソースWeb機能テストツールシリーズであり、テストキットの読み込み、テストの実行、およびテスト結果の記録を行うことができます。実際のユーザー操作をシミュレートして、ブラウズページ、リンク、入力テキスト、フォームの提出、マウスイベントのトリガなどの操作を含みます。つまり、テストケースで予想されるユーザーの行動と結果を説明しさえすれば、自動化で実行できる機能テストキットが得られます。
1.2、アクションウォッチ
アクションchainsはseleniumの中でマウス関連の操作を専門に処理します。例えば、マウスの移動、マウスボタン操作、ボタンとコンテキストメニュー(マウスの右ボタン)が相互作用します。これは、より複雑な動作をするために非常に役立ちます。例えば、ストップやドラッグなどです。
1.3、タイム
現在のタイムスタンプを返します。
1.4、lxml
lxmlはPythonライブラリです。XMLとHTMLファイルを簡単に処理できます。また、webのwebの取得にも使えます。既存のXML解像度は市販されていますが、より良い結果を得るために、開発者は自分のXMLやHTML解析器を作成したい場合があります。この時はlxml庫が役に立ちます。このライブラリの主な利点は、大規模なドキュメントを解析する際には非常に速く、保存も非常に良く、簡単な変換方法を提供して、データをPythonデータタイプに変換し、ファイルの操作を容易にすることです。
1.5、csv
csvファイルフォーマットは、一般的な表計算ドキュメントとデータベースのインポートエクスポート形式です。最近、RPC処理サーバのデータを呼び出した時、データをアーカイブしてこの便利なフォーマットを使う必要があります。
1.6、requests
Requestsライブラリは優雅で簡単なPython HTTPライブラリであり、主にHTTP要求の送信と処理に用いられる。
二、部分コード解析
Chromeドライバを読み込み、動的に解析して登るURL
宝を洗ってインターフェースのurlのフォームの枠に上陸することを位置付けますを通じて(通って)、自分のユーザー名とパスワードを入力して、更にマウスをなぞらえ似せてイベントをクリックして、続いてフォームの情報を提出してユーザーの登録を実現します。
1、まずディレクトリの分類バーに位置して、マウスカーソルを選択する欄に移動します。すると、隠しdivが現れます。(ここではマウスのペンディングを実現する必要があります。)action.move(u)to_elementlist..perform()はこの機能を実現しました。
2、自分が必要としているサイドバーの行または複数行を特定し、マウスのサスペンションを実現してからその内容を取得します。
3、そのハイパーリンクを取得して次のインターフェースに入ります。
1、ここで使用する位置決め方式はXpath方式で、絶対位置決めを使ってラベルの位置を取得します。
取得した画像のurlを通じて、指定されたフォルダに画像をダウンロードします。
1、商品情報は辞書の形式でcsvファイルに書いてあります。見やすいです。
1、まずサイドバーの位置を決めてから、actions.move_を使います。to_elementlist.perform()の方法はマウスのダイナミックなサスペンションを実現して、隠れたdivに表示させて、その中の情報を取得します。
2、次に模擬登録の機能を実現し、アカウントに登録し、その中の商品情報を取得する(タオバオのアンチステーキメカニズムのため、複数回ログインするとユーザーがコードをスキャンして登録されるので、この機能はまだ実現されていない)
3、商品情報の取得はXpathの絶対位置付け方式で取得する。
Xpathの使い方:
右キーの位置を指定するラベル->Copyオプションを選択->Copy Xpath
四、発展空間
1、タオバオの反ステーキメカニズムの問題を解決します。トランスポートゲート
2、ファイルの書き込みは他の方式に変えます。
ここで、Pythonがtaobao商品の情報欄に登って、実現した文章について紹介します。これに関連して、Pythonがtaobao商品の情報を取得した内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
1.1、Selenium
Seleniumは強力なオープンソースWeb機能テストツールシリーズであり、テストキットの読み込み、テストの実行、およびテスト結果の記録を行うことができます。実際のユーザー操作をシミュレートして、ブラウズページ、リンク、入力テキスト、フォームの提出、マウスイベントのトリガなどの操作を含みます。つまり、テストケースで予想されるユーザーの行動と結果を説明しさえすれば、自動化で実行できる機能テストキットが得られます。
1.2、アクションウォッチ
アクションchainsはseleniumの中でマウス関連の操作を専門に処理します。例えば、マウスの移動、マウスボタン操作、ボタンとコンテキストメニュー(マウスの右ボタン)が相互作用します。これは、より複雑な動作をするために非常に役立ちます。例えば、ストップやドラッグなどです。
1.3、タイム
現在のタイムスタンプを返します。
1.4、lxml
lxmlはPythonライブラリです。XMLとHTMLファイルを簡単に処理できます。また、webのwebの取得にも使えます。既存のXML解像度は市販されていますが、より良い結果を得るために、開発者は自分のXMLやHTML解析器を作成したい場合があります。この時はlxml庫が役に立ちます。このライブラリの主な利点は、大規模なドキュメントを解析する際には非常に速く、保存も非常に良く、簡単な変換方法を提供して、データをPythonデータタイプに変換し、ファイルの操作を容易にすることです。
1.5、csv
csvファイルフォーマットは、一般的な表計算ドキュメントとデータベースのインポートエクスポート形式です。最近、RPC処理サーバのデータを呼び出した時、データをアーカイブしてこの便利なフォーマットを使う必要があります。
1.6、requests
Requestsライブラリは優雅で簡単なPython HTTPライブラリであり、主にHTTP要求の送信と処理に用いられる。
二、部分コード解析
Chromeドライバを読み込み、動的に解析して登るURL
# api
def commonsdk(self,url):
browser = webdriver.Chrome('D:/chromedriver.exe')
try:
browser.get(url)
except Exception as e:
browser.execute_script('window.stop()') #
print(e, 'dynamic web load timeout')
return browser;
アナログ登録を実現宝を洗ってインターフェースのurlのフォームの枠に上陸することを位置付けますを通じて(通って)、自分のユーザー名とパスワードを入力して、更にマウスをなぞらえ似せてイベントをクリックして、続いてフォームの情報を提出してユーザーの登録を実現します。
#
def logon(self,url,a_href_list_next):
username = " "
password = " "
browser1 = self.commonsdk(url)
#
browser1.find_element_by_id('fm-login-id').send_keys(username)
browser1.find_element_by_id('fm-login-password').send_keys(password)
#
browser1.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
#
self.Buy_information(a_href_list_next,browser1)
サイドバーのディレクトリを取得します。1、まずディレクトリの分類バーに位置して、マウスカーソルを選択する欄に移動します。すると、隠しdivが現れます。(ここではマウスのペンディングを実現する必要があります。)action.move(u)to_elementlist..perform()はこの機能を実現しました。
2、自分が必要としているサイドバーの行または複数行を特定し、マウスのサスペンションを実現してからその内容を取得します。
3、そのハイパーリンクを取得して次のインターフェースに入ります。
#
def List(self,url):
browser = self.commonsdk(url)
#ActionChains 、 、
action = ActionChains(browser)
li_list = browser.find_elements_by_css_selector('.service-bd li')[1]
# ,
action.move_to_element(li_list).perform()
time.sleep(5)
# div
div_list = browser.find_element_by_css_selector('.service-fi-links')
#
h5_list = div_list.find_elements_by_css_selector('h5')
#
p_list = div_list.find_elements_by_css_selector('p')
# a
a_href_list = div_list.find_elements_by_css_selector('a')
# a
a_href_list_next = div_list.find_elements_by_css_selector('a')[1].get_attribute('href')
print(li_list.text)
for j in range(len(p_list)):
if j<len(p_list):
print(h5_list[j].text)
print(p_list[j].text)
for i in range(len(a_href_list)):
print(a_href_list[i].get_attribute('href'))
#
logon = browser.find_element_by_id('J_SiteNavBd')
#
logon_url = logon.find_element_by_css_selector('a').get_attribute('href')
#
browser.close()
self.logon(logon_url,a_href_list_next)
商品情報を取得する1、ここで使用する位置決め方式はXpath方式で、絶対位置決めを使ってラベルの位置を取得します。
#
def Buy_information(self,url,browser):
browser.get(url)
div_list = browser.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]')
img = div_list.find_element_by_css_selector('img')
img_url = "https:"+img.get_attribute('data-src')
price = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[1]/div[1]').text
number = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[1]/div[2]').text
shoping_information = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[2]').text
shop = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[3]/div[1]/a').text
adress = div_list.find_element_by_xpath('//*[@id="mainsrp-itemlist"]/div/div/div[1]/div[1]/div[2]/div[3]/div[2]').text
path = self.img_baocun(img_url)
data={
' ':path,
' ':price,
' ':number,
' ':shoping_information,
' ':shop,
' ':adress
}
self.write_dictionary_to_csv(data,'information')
画像をダウンロード取得した画像のurlを通じて、指定されたフォルダに画像をダウンロードします。
#
def img_baocun(self,url):
root = " "//
path = root + url.split('?')[0].split('/')[-1].strip('')# jpg
# ,
if not os.path.exists(root):
os.mkdir(root)
# ,
if not os.path.exists(path):
r = requests.get(url)
r.raise_for_status()
with open(path,'wb') as f:
f.write(r.content)
return path
よじ登る必要がある情報をcsvファイルに書き込み、確認しやすいです。1、商品情報は辞書の形式でcsvファイルに書いてあります。見やすいです。
# ( ) csv
def write_dictionary_to_csv(self,dict,filename):
#
file_name='{}.csv'.format(filename)
with open(file_name, 'a',encoding='utf-8') as f:
file_exists = os.path.isfile(filename)
#delimiter( )
w =csv.DictWriter(f, dict.keys(),delimiter=',', quotechar='"', lineterminator='
',quoting=csv.QUOTE_ALL, skipinitialspace=True)
if not file_exists :
w.writeheader()
w.writerow(dict)
print(' csv !')
三、プログラムの考え方1、まずサイドバーの位置を決めてから、actions.move_を使います。to_elementlist.perform()の方法はマウスのダイナミックなサスペンションを実現して、隠れたdivに表示させて、その中の情報を取得します。
2、次に模擬登録の機能を実現し、アカウントに登録し、その中の商品情報を取得する(タオバオのアンチステーキメカニズムのため、複数回ログインするとユーザーがコードをスキャンして登録されるので、この機能はまだ実現されていない)
3、商品情報の取得はXpathの絶対位置付け方式で取得する。
Xpathの使い方:
右キーの位置を指定するラベル->Copyオプションを選択->Copy Xpath
四、発展空間
1、タオバオの反ステーキメカニズムの問題を解決します。トランスポートゲート
2、ファイルの書き込みは他の方式に変えます。
ここで、Pythonがtaobao商品の情報欄に登って、実現した文章について紹介します。これに関連して、Pythonがtaobao商品の情報を取得した内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。