python爬蟲----爬取淘寶數據


引言

前幾周在做c#大作業,做的是一個水果系統,需要一些水果的數據,於是就去爬取淘寶數據,可是爬下來總是空數據,不知道是怎么回事,於是我百度了一下說selenium可以實現,然后我就把selenium學習了下,編寫了一個爬取淘寶商品的代碼.

內容

代碼是用的是selenium 里的 webdriver,通過webdriver可以自動幫我們打開谷歌瀏覽器,然后跳入到淘寶界面,然后登錄,進行爬取。和以往的爬蟲不一樣的是我們不用再去封裝頭。而且我們還可在程序里封裝想要爬取的內容,比如“水果”

具體代碼意思都在注釋,不懂可以看注釋

代碼

#-*- codeing = utf-8 -*-
#@Time : 2020/11/3 20:34
#@Author : 楊曉
#@File : Fruit.py
#@Software: PyCharm
from selenium import webdriver
import time
from pymysql import *
import re
#輸入數據
def search_product(key):
    #獲得輸入框並輸入要搜索的關鍵字key
    driver.find_element_by_id('q').send_keys(key)
    #點擊搜索按鈕
    driver.find_element_by_class_name("btn-search").click()
    #窗口最大化
    driver.maximize_window()
    #休眠15s來登錄淘寶賬號
    time.sleep(15)
    #獲得總頁數
    allPage = driver.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/div[1]').text
    #re.findall('(\d+)',allPage)返回一個列表元素
    allPage = re.findall('(\d+)',allPage)[0]
    return int(allPage)

# 獲取數據
def get_product():
    divs = driver.find_elements_by_xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq  "]')
    for div in divs:
        #獲取元素信息
        img = div.find_element_by_xpath('.//div[@class="pic"]/a/img').get_attribute('src')
        title = div.find_element_by_xpath('.//div[@class="row row-2 title"]/a').text
        price = div.find_element_by_xpath(".//strong").text
        payNums = div.find_element_by_xpath('.//div[@class="deal-cnt"]').text
        save_data(title,img,price,payNums)
#保存數據
def save_data(title,img,price,payNums):
    # 打開數據庫連接(ip/數據庫用戶名/登錄密碼/數據庫名)
    con = connect("localhost", "root", "root", "pachong")
    # 使用 cursor() 方法創建一個游標對象 cursor
    cursors = con.cursor()
    # 使用 execute()  方法執行 SQL 查詢 返回的是你影響的行數
    cursors.execute("insert into fruit values(%s,%s,%s,%s,%s)", (None, title, img, price,payNums))
    # 使用 fetchone() 方法獲取數據.
    con.commit()
    # 關閉數據庫連接(別忘了)
    con.close()
def main(keyWord):
    #獲得總共頁數
    allPage = search_product(keyWord)
    currentPage = 1
    while currentPage <= allPage:
        print("第{}頁數據".format(currentPage))
        print("*****************************************")
        driver.get("https://s.taobao.com/search?q={}&s={}".format(keyWord,(currentPage-1)*44))
        driver.implicitly_wait(2)  #瀏覽器等待方法
        #driver.maximize_window()
        get_product()
        print("第{}頁數據保存成功".format(currentPage))
        currentPage += 1
        print("*****************************************")
if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get("https://s.taobao.com/")
    main("水果")



免責聲明!

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



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