現在電商平臺有很多商品資料,采集到的資料對電商價格戰很有優勢,這不,雙十一預售都已經開啟了,不得對自己好一點,把購物車塞到滿滿當當,

所以今天咱們以京東為例,試一試效果叭~
知識點:
- selenium工具的使用
- 結構化的資料決議
- csv資料保存
環境:
- python 3.8
- pycharm
- selenium
- csv
- time
selenium用來實作瀏覽器自動化操作,我們想實作瀏覽器自動操作還需要下載一個chromedriver工具,沒有軟體或者不會安裝、沒有激活碼等等,都在文末統一給出來,

好了,開始我們的正文吧,
需要用的模塊先匯入進去,這一步寫給新手,
import csv # 資料保存模塊, 內置模塊
import time
from selenium import webdriver
既然我們要爬商品,當然就要實作搜索商品吧,
def get_product(key):
"""搜索商品"""
driver.find_element_by_css_selector('#key').send_keys(key)
driver.find_element_by_css_selector('#search > div > div.form > button').click()
然后把搜索功能寫出來
keyword = input('請輸入你要搜索商品的關鍵字:')
運行之后的搜索效果
資料懶加載? 你如果沒有下拉頁面, 那么頁面下半部分資料是不會給你顯示的,
所以我們要執行頁面的下拉操作
創建一個瀏覽器 物件
driver = webdriver.Chrome()
執行瀏覽器自動化
driver.get('https://www.jd.com/')
driver.implicitly_wait(10) # 設定瀏覽器的隱式等待, 智能化等待<不會死等>
driver.maximize_window() # 最大化瀏覽器
呼叫搜索商品的函式
get_product(keyword)
def drop_down():
"""執行頁面的下拉操作"""
for x in range(1, 11, 2): # 控制下拉次數 代碼是活的,
j = x / 10 # 1/10 3/10 ... 10/10
# js JavaScript 是可以直接運行在瀏覽器的一門計算機語言 通過js下拉頁面
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
time.sleep(0.5) # 休息的時間是讓瀏覽器加載資料的
這時候selenium的作用就來了,我們以搜索鍵盤為例,
selenium實作自動化操作
然后我們要做的是決議商品資料并保存到Excel表格去,商品的標簽、名字、價格、評論、店鋪名字等等,當然只要你能看到的資料都可以爬下來,
def parse_data():
"""決議商品資料, 并且保存資料"""
lis = driver.find_elements_by_css_selector('.gl-item') # 決議到了所有的li標簽
for li in lis:
try:
name = li.find_element_by_css_selector('div.p-name a em').text # 商品的名字
price = li.find_element_by_css_selector('div.p-price strong i').text + '元' # 商品的價格
deal = li.find_element_by_css_selector('div.p-commit strong a').text # 商品的評價數量
title = li.find_element_by_css_selector('span.J_im_icon a').get_attribute('title') # 商品的店鋪名字
name = name.replace('京東超市', '').replace('\n', '')
print(name, price, deal, title)
# 資料的保存
with open('京東.csv', mode='a', encoding='utf-8', newline='') as f:
csv_write = csv.writer(f)
csv_write.writerow([name, price, deal, title])
except:
continue
這是獲取到的資料自動保存為Excel
但是當前只爬了一頁,我們要實作更多的資料爬取,寫一個翻頁就好了,
def get_next():
"""翻頁"""
driver.find_element_by_css_selector('#J_bottomPage > span.p-num > a.pn-next > em').click()
翻頁下的邏輯需要回圈執行
for page in range(100):
# 呼叫頁面下拉函式
drop_down()
# 呼叫資料決議函式
parse_data()
# 呼叫翻頁的函式
get_next()
寫在最后
好了,今天就寫到這里,大家可以自己嘗試,有跟本文對應的視頻教程,可以一步步學習,包括本文原始碼也可以獲取,
如需完整的專案原始碼+素材原始碼Python交流大家庭見:點擊藍色文字添加即可獲取免費的福利!
兄弟們的支持就是對我最大的動力,點贊三連督促我加班熬夜更新吧!
如果在學習Python遇到了問題,有空的時候都可以給大家解答,有需要自行加一哈!
放WX如下 Pythonmiss
歡迎大家閱讀往期文章

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333806.html
標籤:python
上一篇:Python中的條件陳述句
下一篇:【演算法學習】1512. 好數對的數目(java / c / c++ / python / go / rust)
