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遇到了問題,有空的時候都可以給大家解答。

歡迎大家閱讀往期文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM