1. 程式人生 > 其它 >Python爬蟲程式碼:雙十一到了,爬一下某東看看有沒有好東西,這不得買一波大的!

Python爬蟲程式碼:雙十一到了,爬一下某東看看有沒有好東西,這不得買一波大的!

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

所以今天咱們以京東為例,試一試效果叭~

知識點:

  1. selenium工具的使用
  2. 結構化的資料解析
  3. 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)  # 休息的時間是讓瀏覽器載入資料的

然後我們要做的是解析商品資料並儲存到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遇到了問題,有空的時候都可以給大家解答。

歡迎大家閱讀往期文章