您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python怎么抓取淘寶商品信息”,在日常操作中,相信很多人在Python怎么抓取淘寶商品信息問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python怎么抓取淘寶商品信息”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
對于采用異步加載技術的網頁,有時候想通過逆向工程的方式來設計爬蟲進行爬取會比較困難,因此,要想通過python獲取異步加載數據往往可以使用Selenium模擬瀏覽器的方式來獲取。
Selenium是一個用于Web應用程序測試的工具,它可以在瀏覽器中運行,模擬用戶真實的瀏覽網頁操作,也就是說可以實現瀏覽器加載頁面,搜索關鍵字和點擊翻頁等等操作,因此,就算使用了異步加載技術的網頁,也可以模擬翻頁得到不同的網頁,也就可以得到你想要的數據了。
Selenium模塊在第三方庫里面可以找到,使用pycharm軟件,打開左上角PyCharm->項目->python解釋器->preferences里面添加,結果如下圖進行搜索安裝即可。
由于Selenium自己不帶有瀏覽器,因此需要配合我們自己電腦安裝的瀏覽器來使用,這里我們是通過常用的Chrome瀏覽器來模擬實現爬取數據。具體可以模擬的操作主要有如下一些操作:輸入框內容填寫、點擊按鈕、截屏、下滑等,因此對于登錄網站的時候,我們可以不再需要構造表單或者提交cookie來登錄網站了,只需要通過python代碼模擬輸入《賬號》和《密碼》實現登錄。
(1)以下是模擬搜索和登錄最常用代碼
(2)登錄后獲取數據的常用代碼
備注:此處xpath和單獨的xpath方法差異就是此處是在最后加.text,單獨xpath是在路徑里面加/text()
以上是selenium基本要點,現在讓我們開始進行實踐操刀,如何來對淘寶商品信息進行抓取。
工具和語言:Selenium+Chrome+PyCharm+Python
抓取平臺:www.taobao.com
抓取思路:以抓取我最近想入手的投影儀商品為例
(1)打開淘寶網,輸入投影儀,得到商品信息頁面
(2)打開網頁源代碼,查看輸入投影儀后的搜索框位置如下圖,確定位置,為后續輸入關鍵字做準備
(3)有時在你點擊搜索后,淘寶強制需要登錄網頁,就需要再次查看輸入賬號和密碼的位置,然后同理操作進入網頁,在此不再贅述,直接上代碼如下
(4)接下來要模擬翻頁操作,同理也是找到翻頁位置:下一頁,如下圖
(5)此時頁面上有的信息都可以嘗試查看,舉例如付款人數、價錢等都可以嘗試測試看看。
(6)最后數據存儲數據庫就可以了,詳細入庫代碼見詳細代碼部分
詳細代碼如下:
from selenium import webdriver
from lxml import etree
import time
import pymysql
db = pymysql.connect(host='localhost', user='root', passwd='數據庫密碼', db='數據庫名稱', port=3306, charset='utf8')
print("數據庫連接")
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS Learn_data.taobao_touyingyi_data")
sql = """CREATE TABLE IF not EXISTS Learn_data.taobao_touyingyi_data (
id int auto_increment primary key,
price CHAR(100),
sell CHAR(100),
detail CHAR(100)
)
DEFAULT CHARSET=utf8"""
cursor.execute(sql)
driver=webdriver.Chrome()
driver.maximize_window()
def get_info(url,page):
page=page+1
driver.get(url)
driver.implicitly_wait(10)
selector=etree.HTML(driver.page_source)
infos=selector.xpath('//div[@class="items"]/div[@class="item J_MouserOnverReq "]')
for info in infos:
price = info.xpath('div[2]/div/div/strong/text()')[0]
sell = info.xpath('div[2]/div/div[2]/text()')[0]
detail = info.xpath('div[2]/div/div[2]/text()')[1]
print(price,sell,detail)
cursor.execute("insert into taobao_touyingyi_data (price,sell,detail)values(%s,%s,%s)",(str(price),str(sell),str(detail)))
if page<=1:
NextPage(url,page)
else:
pass
def NextPage(url,page):
print(url)
driver.get(url)
driver.implicitly_wait(10)
driver.find_element_by_xpath('//a[@trace="srp_bottom_pagedown"]').click()
time.sleep(4)
driver.get(driver.current_url)
driver.implicitly_wait(10)
get_info(driver.current_url, page)
if __name__=='__main__':
page=1
url='https://www.taobao.com/'
driver.get(url)
driver.implicitly_wait(10)
driver.find_element_by_id('q').clear()
driver.find_element_by_id('q').send_keys('投影儀')
driver.find_element_by_class_name('btn-search').click()
driver.find_element_by_id("fm-login-id").send_keys("賬號")
# 找到按鈕的位置
time.sleep(1)
# 找到密碼的位置
driver.find_element_by_id("fm-login-password").send_keys("密碼")
# 確保賬號和密碼輸入完成
time.sleep(3)
# 識別驗證碼
# 找到圖片地址
ret = driver.find_element_by_class_name("fm-button")
# 點擊按鈕
ret.click()
time.sleep(3)
print(driver.current_url)
get_info(driver.current_url,page)
db.commit()
運行數據庫結果如下:
到此,關于“Python怎么抓取淘寶商品信息”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。