[PROD JECT]Kakao Friends Shopクローンコード-#02 Webスクロール読みWebキャプチャと書く!
13825 ワード
この文章を完成したり、スクロールファイルを作成したり、完成段階の状態で
こんな話を聞く.
心の片隅で知っていたけど...チームのメンターに聞いたことがありますが、Kakao Friends Shopというのは、KakaoキャラクターがKakao Friends Shopのコアクリエイティブなので、スクロールしないわけにはいきません.(だからこの言葉を聞いて)ダメだと分かっていたのですが、頑張っていきました…
とりあえず、今日のタグスクロールファイルは完成したようです.
KACAロールやカテゴリによるスクロールファイルはまだ完成していないようです.
しかし、私はほとんどできました.私はどのようにスクロールするかを決めたので、より多くのコードを書くことができませんでした.
欲しい人が持ってきて...コードを何行か書いて、完成したらまた回してください.はい.
これはオープンソースですか...九麗
とにかく、私が以前実习した方法と私の知らない方法で
(python)xpathを使用してSeleniumをスクロール
Web Scraping using Selenium and Python
以前は
1ページで、カテゴリの個数で各カテゴリ内の飲料のサムネイルと名前の実習を取得します.
今回は、html要素の属性を
xpath
複数ページの間を自由に移動し、ボタンをクリックします.
開発がいつものように、転がる世界は想像以上に膨大で、不思議な方法がたくさんあって、やっているうちに本当に面白くなりました.
(実は、水曜日を基準にして、これ以上転がることはできませんが、続けたいカエルの心がありました.もちろんできません)
その後、検索する値を入力したり、ボタンをクリックしたり、ページを移動したりするなど、スクロール操作も行います.
彼はプロジェクトの進行中にスクロールを主な内容にすることはできないが、奇妙にスクロールの魅力に陥ったと言った.
ホームページで「今日」タブを切り取ります
スクロールのために情報を準備している場合は、収集できない情報はありません 私は夜明けにこのすべてを終わらせるように燃えていますが.
翌朝は転がり禁止の音が...すべての意志を失った...だから残りは完成しなかった...私のコード...
使うなら誰かが持ってきて使いましょう.(一撃)
上のコードが終わると完成しますははは
著作権の問題でスクロール禁止!
こんな話を聞く.
心の片隅で知っていたけど...チームのメンターに聞いたことがありますが、Kakao Friends Shopというのは、KakaoキャラクターがKakao Friends Shopのコアクリエイティブなので、スクロールしないわけにはいきません.(だからこの言葉を聞いて)ダメだと分かっていたのですが、頑張っていきました…
とりあえず、今日のタグスクロールファイルは完成したようです.
KACAロールやカテゴリによるスクロールファイルはまだ完成していないようです.
しかし、私はほとんどできました.私はどのようにスクロールするかを決めたので、より多くのコードを書くことができませんでした.
欲しい人が持ってきて...コードを何行か書いて、完成したらまた回してください.はい.
これはオープンソースですか...九麗
とにかく、私が以前実习した方法と私の知らない方法で
web scraping
试してみます!(python)xpathを使用してSeleniumをスクロール
Web Scraping using Selenium and Python
基本的に使うライブラリはBeautifulSoup 4 Selenium!
以前は
find_element_by_css_selector
しか使用されていなかったので、ページはダイナミックです.1ページで、カテゴリの個数で各カテゴリ内の飲料のサムネイルと名前の実習を取得します.
今回は、html要素の属性を
WebElement
メソッドで取得する方法get_attribute
がよく見られます.xpath
find_element_by_xpath
メソッドを使用します.複数ページの間を自由に移動し、ボタンをクリックします.
開発がいつものように、転がる世界は想像以上に膨大で、不思議な方法がたくさんあって、やっているうちに本当に面白くなりました.
(実は、水曜日を基準にして、これ以上転がることはできませんが、続けたいカエルの心がありました.もちろんできません)
その後、検索する値を入力したり、ボタンをクリックしたり、ページを移動したりするなど、スクロール操作も行います.
彼はプロジェクトの進行中にスクロールを主な内容にすることはできないが、奇妙にスクロールの魅力に陥ったと言った.
ホームページで「今日」タブを切り取ります
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import csv
import time
#1. csv file open
csv_name = "main_today.csv"
csv_open = open(csv_name, "w+", encoding="utf-8")
csv_writer = csv.writer(csv_open)
csv_writer.writerow(("profile_image", "name", "display_date", "image", "like_count", "title", "sub_copy"))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(2)
#4. Get element selector (1)
articles = soup.select('#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article')
#5. Get element selector (2)
for i in range(1, len(articles)+1):
profile_image = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section.header__Wrap-sc-1uyrtg9-0.hXrGqX > div.header__ImageWrap-sc-1uyrtg9-1.kmIBex > img')
name = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section.header__Wrap-sc-1uyrtg9-0.hXrGqX > div:nth-child(2) > p')
display_date = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section.header__Wrap-sc-1uyrtg9-0.hXrGqX > div:nth-child(2) > div > span.header__DisplayDate-sc-1uyrtg9-7.bbyqry')
like_count = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.contents__LikeCountWrap-sc-1b0iw5u-2.fDHkJk > span > span > span')
title = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > p')
sub_copy = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.contents__SubCopy-sc-1b0iw5u-6.dLrCHR')
images = soup.select(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.media-slider__Wrap-bw8abp-0.ksgZQS > div > div > div')
#6. Get image url
for j in range(1, len(images)+1):
image = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.media-slider__Wrap-bw8abp-0.ksgZQS > div > div > div:nth-child({j}) > div > div > img')
img_url = image.get_attribute('src')
#7. Create csv file
if i == 0:
csv_writer.writerow((profile_image.get_attribute('src'), name.text, display_date.text, img_url, like_count.text, title.text, sub_copy.text))
else:
csv_writer.writerow((profile_image.get_attribute('src'), name.text, display_date.text, img_url, like_count.text, title.text, sub_copy.text))
ロールに関連するコンテンツの消去
1.キャラクターサムネイル、名前スクロール
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "character_type.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector (1)
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/button').click()
time.sleep(2)
#char = soup.selector(f'body > div:nth-child(7) > div > div > div > ul > li:nth-child(3) > ul > li > a')
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/ul/li/a')
for i in char:
character = i.get_attribute('href').split("categorySeq=",1)[1]
name = i.text
csv_writer.writerow((character, name))
driver.quit()
2.ロールごとにカタログをまとめる
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "character.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
#4-1. Get character list
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/button').click()
time.sleep(2)
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/ul/li/a')
char_list = []
for i in char:
character = i.get_attribute('href').split("categorySeq=",1)[1]
char_list.append(character)
#4-2. Get Product_num from main view
product_num = []
for seq in char_list:
url1 = "https://store.kakaofriends.com/kr/products/category/character?categorySeq="+ seq +"&sort=createDatetime,desc"
driver.get(url1)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
product_num += driver.find_elements_by_xpath('//*[@id="mArticle"]/div[3]/ul/li/a').get_attribute('href').split("products/",1)[1]
print(product_num)
ㅁㅣ완성 area
#csv_writer.writerow((character, name))
#driver.quit()
各キャラクターの商品詳細照会結果は、各カテゴリの商品詳細照会画面と同じです.
カテゴリに直接移動しました.
カテゴリに関連するコンテンツの消去
1.カテゴリリストのスクロール
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "type.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/button').click()
time.sleep(2)
#char = soup.selector(f'body > div:nth-child(7) > div > div > div > ul > li:nth-child(3) > ul > li > a')
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/ul/li/a')
del char[0]
for i in char:
categorySeq = i.get_attribute('href').split("categorySeq=",1)[1]
name = i.text
csv_writer.writerow((categorySeq, name))
driver.quit()
2.商品詳細照会スクロール
商品カタログごとに商品idとサムネイルを抽出したいと思っていました.
よく考えてみると、詳しく調べたときに出てくる1枚目の写真=サムネイルなので
各カテゴリの商品総数とidを抽出し、抽出した商品のすべてのリストを繰り返し、urlの後半を変更するだけで、詳細検索ページ内の情報をスクロールできます.import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "category_all.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('product_id','sub_category','content_name','price'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
#4-1. Get category list
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(3)
category_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/button').click()
time.sleep(3)
category = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/ul/li/a')
del category[0]
category_list = []
for i in category:
categorySeq = i.get_attribute('href').split("categorySeq=",1)[1]
category_list.append(categorySeq)
#4-2. Get Product_num from main view
url1 = "https://store.kakaofriends.com/kr/products/category/subject?sort=createDatetime,desc"
driver.get(url1)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
products = driver.find_elements_by_xpath('//*[@id="mArticle"]/div[3]/ul/li/a')
product_num = []
for i in products:
p_code = i.get_attribute('href').split("products/")[1]
product_num.append(p_code)
#4-3. Get Product_detail from detail view
for i in product_num:
url2 = "https://store.kakaofriends.com/kr/products/"+i
driver.get(url2)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
script_text = driver.find_element_by_xpath("/html/body/script[2]").get_attribute('innerHTML')
### 이쯤부터 미완이었던거같다,....? ###
print(script_text[script_text.find('{')-1 : script_text.find('}')+1])
#print(script_text)
#csv_writer.writerow(('product_id','sub_category','content_name','price'))
#driver.quit()
ちなみに、Kaka Friends Shopは開発者ツールelements
Tabで商品情報を知ることができます.
一般的には安全上の問題で皆さんに見せたくないのは、内容が重要ではないからかもしれません.
あなたのおかげで、私はscript
でこの商品に関する情報をより簡単に抽出することができます.script_text
変数はこの部分です!!
これが体験の日…!!なんだ.これら.👇🏻👇🏻👇🏻
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import csv
import time
#1. csv file open
csv_name = "main_today.csv"
csv_open = open(csv_name, "w+", encoding="utf-8")
csv_writer = csv.writer(csv_open)
csv_writer.writerow(("profile_image", "name", "display_date", "image", "like_count", "title", "sub_copy"))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(2)
#4. Get element selector (1)
articles = soup.select('#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article')
#5. Get element selector (2)
for i in range(1, len(articles)+1):
profile_image = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section.header__Wrap-sc-1uyrtg9-0.hXrGqX > div.header__ImageWrap-sc-1uyrtg9-1.kmIBex > img')
name = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section.header__Wrap-sc-1uyrtg9-0.hXrGqX > div:nth-child(2) > p')
display_date = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section.header__Wrap-sc-1uyrtg9-0.hXrGqX > div:nth-child(2) > div > span.header__DisplayDate-sc-1uyrtg9-7.bbyqry')
like_count = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.contents__LikeCountWrap-sc-1b0iw5u-2.fDHkJk > span > span > span')
title = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > p')
sub_copy = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.contents__SubCopy-sc-1b0iw5u-6.dLrCHR')
images = soup.select(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.media-slider__Wrap-bw8abp-0.ksgZQS > div > div > div')
#6. Get image url
for j in range(1, len(images)+1):
image = driver.find_element_by_css_selector(f'#mArticle > main > div.today__Wrap-sc-1gh0i9h-0.fCbncI > article:nth-child({i}) > section:nth-child(2) > div.media-slider__Wrap-bw8abp-0.ksgZQS > div > div > div:nth-child({j}) > div > div > img')
img_url = image.get_attribute('src')
#7. Create csv file
if i == 0:
csv_writer.writerow((profile_image.get_attribute('src'), name.text, display_date.text, img_url, like_count.text, title.text, sub_copy.text))
else:
csv_writer.writerow((profile_image.get_attribute('src'), name.text, display_date.text, img_url, like_count.text, title.text, sub_copy.text))
1.キャラクターサムネイル、名前スクロール
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "character_type.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector (1)
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/button').click()
time.sleep(2)
#char = soup.selector(f'body > div:nth-child(7) > div > div > div > ul > li:nth-child(3) > ul > li > a')
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/ul/li/a')
for i in char:
character = i.get_attribute('href').split("categorySeq=",1)[1]
name = i.text
csv_writer.writerow((character, name))
driver.quit()
2.ロールごとにカタログをまとめる
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "character.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
#4-1. Get character list
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/button').click()
time.sleep(2)
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[3]/ul/li/a')
char_list = []
for i in char:
character = i.get_attribute('href').split("categorySeq=",1)[1]
char_list.append(character)
#4-2. Get Product_num from main view
product_num = []
for seq in char_list:
url1 = "https://store.kakaofriends.com/kr/products/category/character?categorySeq="+ seq +"&sort=createDatetime,desc"
driver.get(url1)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
product_num += driver.find_elements_by_xpath('//*[@id="mArticle"]/div[3]/ul/li/a').get_attribute('href').split("products/",1)[1]
print(product_num)
ㅁㅣ완성 area
#csv_writer.writerow((character, name))
#driver.quit()
各キャラクターの商品詳細照会結果は、各カテゴリの商品詳細照会画面と同じです.カテゴリに直接移動しました.
カテゴリに関連するコンテンツの消去
1.カテゴリリストのスクロール
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "type.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/button').click()
time.sleep(2)
#char = soup.selector(f'body > div:nth-child(7) > div > div > div > ul > li:nth-child(3) > ul > li > a')
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/ul/li/a')
del char[0]
for i in char:
categorySeq = i.get_attribute('href').split("categorySeq=",1)[1]
name = i.text
csv_writer.writerow((categorySeq, name))
driver.quit()
2.商品詳細照会スクロール
商品カタログごとに商品idとサムネイルを抽出したいと思っていました.
よく考えてみると、詳しく調べたときに出てくる1枚目の写真=サムネイルなので
各カテゴリの商品総数とidを抽出し、抽出した商品のすべてのリストを繰り返し、urlの後半を変更するだけで、詳細検索ページ内の情報をスクロールできます.import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "category_all.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('product_id','sub_category','content_name','price'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
#4-1. Get category list
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(3)
category_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/button').click()
time.sleep(3)
category = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/ul/li/a')
del category[0]
category_list = []
for i in category:
categorySeq = i.get_attribute('href').split("categorySeq=",1)[1]
category_list.append(categorySeq)
#4-2. Get Product_num from main view
url1 = "https://store.kakaofriends.com/kr/products/category/subject?sort=createDatetime,desc"
driver.get(url1)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
products = driver.find_elements_by_xpath('//*[@id="mArticle"]/div[3]/ul/li/a')
product_num = []
for i in products:
p_code = i.get_attribute('href').split("products/")[1]
product_num.append(p_code)
#4-3. Get Product_detail from detail view
for i in product_num:
url2 = "https://store.kakaofriends.com/kr/products/"+i
driver.get(url2)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
script_text = driver.find_element_by_xpath("/html/body/script[2]").get_attribute('innerHTML')
### 이쯤부터 미완이었던거같다,....? ###
print(script_text[script_text.find('{')-1 : script_text.find('}')+1])
#print(script_text)
#csv_writer.writerow(('product_id','sub_category','content_name','price'))
#driver.quit()
ちなみに、Kaka Friends Shopは開発者ツールelements
Tabで商品情報を知ることができます.
一般的には安全上の問題で皆さんに見せたくないのは、内容が重要ではないからかもしれません.
あなたのおかげで、私はscript
でこの商品に関する情報をより簡単に抽出することができます.script_text
変数はこの部分です!!
これが体験の日…!!なんだ.これら.👇🏻👇🏻👇🏻
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "type.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('categorySeq','name'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(2)
char_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/button').click()
time.sleep(2)
#char = soup.selector(f'body > div:nth-child(7) > div > div > div > ul > li:nth-child(3) > ul > li > a')
char = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/ul/li/a')
del char[0]
for i in char:
categorySeq = i.get_attribute('href').split("categorySeq=",1)[1]
name = i.text
csv_writer.writerow((categorySeq, name))
driver.quit()
import csv
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#1. csv file open
csv_name = "category_all.csv"
csv_open = open(csv_name, "w+", encoding='utf-8')
csv_writer = csv.writer(csv_open)
csv_writer.writerow(('product_id','sub_category','content_name','price'))
#2. Driver & BeautifulSoup
driver = webdriver.Chrome(ChromeDriverManager().install())
org_crawling_url = "https://store.kakaofriends.com/kr/index?tab=today"
driver.get(org_crawling_url)
#3. Parsing html code
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
#4. Get element selector
#4-1. Get category list
hamburger_button = driver.find_element_by_xpath('//*[@id="innerHead"]/div/button[2]').click()
time.sleep(3)
category_button = driver.find_element_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/button').click()
time.sleep(3)
category = driver.find_elements_by_xpath('/html/body/div[6]/div/div/div/ul/li[4]/ul/li/a')
del category[0]
category_list = []
for i in category:
categorySeq = i.get_attribute('href').split("categorySeq=",1)[1]
category_list.append(categorySeq)
#4-2. Get Product_num from main view
url1 = "https://store.kakaofriends.com/kr/products/category/subject?sort=createDatetime,desc"
driver.get(url1)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
products = driver.find_elements_by_xpath('//*[@id="mArticle"]/div[3]/ul/li/a')
product_num = []
for i in products:
p_code = i.get_attribute('href').split("products/")[1]
product_num.append(p_code)
#4-3. Get Product_detail from detail view
for i in product_num:
url2 = "https://store.kakaofriends.com/kr/products/"+i
driver.get(url2)
full_html = driver.page_source
soup = BeautifulSoup(full_html, 'html.parser')
time.sleep(3)
script_text = driver.find_element_by_xpath("/html/body/script[2]").get_attribute('innerHTML')
### 이쯤부터 미완이었던거같다,....? ###
print(script_text[script_text.find('{')-1 : script_text.find('}')+1])
#print(script_text)
#csv_writer.writerow(('product_id','sub_category','content_name','price'))
#driver.quit()
xpath
,css selector
使用方法web element
|どのように加工しますか?翌朝は転がり禁止の音が...すべての意志を失った...だから残りは完成しなかった...私のコード...
使うなら誰かが持ってきて使いましょう.(一撃)
上のコードが終わると完成しますははは
Reference
この問題について([PROD JECT]Kakao Friends Shopクローンコード-#02 Webスクロール読みWebキャプチャと書く!), 我々は、より多くの情報をここで見つけました https://velog.io/@haileeyu21/PROJECT-카카오프렌즈-클론코딩-web-scrapingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol