Python爬蟲、數據分析、網站開發等案例教程視頻免費在線觀看
完整代碼可以加Python學習交流群:1039649593 找管理員免費領取
前言
隨着互聯網時代的到來,人們更加傾向於互聯網購物,某寶又是電商行業的巨頭,在某寶平台中有很多商家數據,今天帶大家使用python+selenium工具獲取這些公開的商家數據
環境介紹:
- python 3.6
- pycharm
- selenium
- csv
- time
- random
這次的受害者:淘寶購物平台
1. 創建一個瀏覽器對象
from selenium import webdriver driver = webdriver.Chrome()
2. 執行自動化頁面操作
driver.get('https://www.taobao.com/') driver.maximize_window() # 最大化瀏覽器 driver.implicitly_wait(10) # 設置瀏覽器的隱式等待, 智能化的等待
到這一步,你就可以自己運行代碼看看可不可以自動打開你的瀏覽器進入淘寶的首頁
3. 根據關鍵字搜索商品, 解決登錄
復制它的xpath,用xpath語法提取頁面標簽的元素
def search_product(keyword): # 輸入框的標簽對象 driver.find_element_by_xpath('//*[@id="q"]').send_keys(keyword) word = input('請輸入你要搜索商品的關鍵字:')
運行代碼
前面搞定了搜索框的,現在來寫點擊搜索按鈕的,同樣復制它的xpath
# 為了避免被檢測 import time # 時間模塊 內置模塊 time.sleep(random.randint(1, 3)) # 隨機休眠1到3秒 driver.find_element_by_xpath('//*[@id="J_TSearchForm"]/div[1]/button').click()
4. 解決登錄
點擊了搜索按鈕以后,會彈出登錄界面給你,那就繼續解決登錄
driver.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(TAO_USERNAME) time.sleep(random.randint(1, 2)) driver.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(TAO_PASSWORD) time.sleep(random.randint(1, 2)) driver.find_element_by_xpath('//*[@id="login-form"]/div[4]/button').click()
5. 解析數據
獲取目標數據的div標簽
def parse_data(): # 所有div標簽 divs = driver.find_elements_by_xpath('//div[@class="grid g-clearfix"]/div/div')
用for循環遍歷取值
for div in divs: # 二次提取 title = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text price = div.find_element_by_xpath('.//strong').text + '元' # 商品價格 # 手寫 deal = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text # 付款人數 # 手寫 name = div.find_element_by_xpath('.//div[@class="shop"]/a/span[2]').text # 店鋪名稱 # 手寫 location = div.find_element_by_xpath('.//div[@class="location"]').text # 店鋪地址 # 手寫 detail_url = div.find_element_by_xpath('.//div[@class="pic"]/a').get_attribute('href') # 詳情頁地址 # 手寫 print(title, price, deal, name, location, detail_url)
運行代碼,可以看到獲取的數據了
6. 最后一步,保存數據
import csv with open('淘寶.csv', mode='a', encoding='utf-8', newline='') as f: csv_write = csv.writer(f) # 實例化csv模塊寫入對象 csv_write.writerow([title, price, deal, name, location, detail_url])
