Webページを参照してみましょう🤔


Web scrippingは、、、、不思議で、面白くて、煩雑で、
Request、BeutifulSoup、Seleniumは知っています.

基本前提知識


HTTP


HTTPは、HTMLドキュメントなどのリソースのインポートを許可するプロトコルです。HTTPはWeb上のすべてのデータ交換の基礎であり、クライアント-サーバプロトコルでもある。

私のPCとWebサーバ間の通信.リクエスト(request)またはresponse(response)データの付与時にコミュニケーションする言語.
私たちはスクロールするとき、この言語でWebサーバにデータを提供するように要求します.
サーバにデータを要求するときGET、データを送信するときPOST

HTML


ハイパーテキストタグ言語(HTML)はプログラミング言語ではなく、ブラウザに私たちが見ているページがどのように構造化されているかを知らせるタグ言語です。

Webサーバにデータを要求すると、WebサーバはHTMLのソースコードを書いてくれます.ブラウザはこのコードを説明し、よく見るページ形式に分けます.
したがって、ポーリングを行う場合は、Webサーバにリクエストを送信し、htmlからなるソースコードを受信し、必要な部分を抽出する必要があります.

Request


モジュールのクリーンアップ


GET

import requests

url = 'https://naver.com'
response = requests.get(url)
response.text
最も基本的な方法.
url = 'https://search.naver.com/search.naver'
params = {
    'where':'image',
    'sm':'tab_jum',
    'query':'youtube'
}
response = requests.get(url, params=params)
htmml = response.content
パラメータをディックシャナリーに渡すことができます.
ちなみにtextとcontentの違いは、textがUnicodeを読み出し、contentがバイトを読み出すことです.
テキストのみ->text
イメージがあっていろいろ読みたい

BeautifulSoup


htmlコードをより理解しやすくします.(これはスープです)
スープから欲しい部分を抽出できます.select、select oneを使用します.
import requests
from bs4 import BeautifulSoup as bs

soup = BeautifulSoup(html)

soup.select('.photo_group._listGrid')

url = 'https://search.naver.com/search.naver'

params = {
    'where' : 'news',
    'sm' : 'tab_jum',
    'query' : '아이폰'
}

response = requests.get(url, params = params)

response.url

soup = BeautifulSoup(response.content)

elements = soup.select('.news_area')

news_list = []
for element in elements:
    news = element.select_one('.news_tit')
    print(news)
    
    news_data ={
        'title' : news['title'],
        'link' : news['href']
    }
    news_list.append(news_data)

import pandas as pd
pd.DataFrame(news_list)
これは、ネイバーの記事10編を読み、各記事のtitle、linkディックシリーズを生成した後、それをデータフレームに作成するプロセスです.
selectはlistを返します.条件を満たすすべてのオブジェクトのリストを返します.
select oneは、条件を満たす最初のオブジェクトのみを返します.

Selenium


自動化ツールです.Web上での動作を自動化できます.
ボタンを押したり、パスワードを入力したりする行為.
from selenium import webdriver 
driver = webdriver.Chrome('./chromedriver')

driver.get('https://www.naver.com')

driver.find_element_by_xpath('//*[@id="account"]/a').click()

driver.find_element_by_xpath('//*[@id="id"]').send_keys('123')

driver.find_element_by_xpath('//*[@id="pw"]').send_keys('123')

driver.find_element_by_xpath('//*[@id="log.login"]').click()

driver.close()
これはNAVERログインのプロセスです.
入力データsend_keysclickをクリックし、time.sleep(1)1秒待ち

CelenniumとBeautiful Circhの同時書き込み

url = 'https://color.adobe.com/ko/search?q=warm'
response = requests.get(url)
soup = BeautifulSoup(response.content)
soup

driver = webdriver.Chrome('./chromedriver')
driver.get('https://color.adobe.com/ko/search?q=warm')

driver.find_element_by_xpath('//*[@id="react-spectrum-8"]/div/div[3]').click()

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')

a = soup.select('div.Theme__theme___2NcED')

a[3]
ポップアップウィンドウxボタンをセルとしてクリックし、htmlソースコードをbsに分割します.