selenium實現淘寶的商品爬取


一、問題

本次利用selenium自動化測試,完成對淘寶的爬取,這樣可以避免一些反爬的措施,也是一種爬蟲常用的手段。本次實戰的難點:

1.如何利用selenium繞過淘寶的登錄界面

2.獲取淘寶的頁面內容實現翻頁,並判斷是否翻頁成功。

3.獲取每一頁的信息,實現數據的抓取工作。

 4.環境python3.6,對應的Chrome的webdriver驅動網址:http://chromedriver.storage.googleapis.com/index.html,將自己對應的webdriver放入scripts的環境內。

二、解決

1.在登錄淘寶界面的時候,會彈出界面窗口,需要捕捉當前的頁面,判斷是否有變化。

先用self.browser【驅動名稱】.current_window_handle來捕獲當前的界面信息。

用self.browser【驅動名稱】.switch_to_window(now_handle),來進行頁面變化的判斷

self.browser.get(self.url)
input_content = self.wait.until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '#q'))
    )
submit = self.wait.until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "#J_TSearchForm > div.search-button > button"))
    )
now_handle = self.browser.current_window_handle
input_content.send_keys(self.key)
submit.click()
self.browser.switch_to_window(now_handle)

2.在當前頁碼的判斷,確定是否翻頁成功。

獲取輸入標簽的值,和點擊按鈕,完成翻頁動作,再用EC.text_to_be_present_in_element來檢測是否完成了翻頁的動作。

print("正在翻第{0}頁".format(number)) input_content = self.wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > input')) ) submit = self.wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit")) ) input_content.clear() input_content.send_keys(number) submit.click() self.wait.until( EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > ul > li.item.active > span'), str(number)) ) self.get_content()

3.利用選擇器獲取整個頁面的內容:

利用xpath進行解析,也可以利用pyquery等一系列的解析方式進行解析。

self.wait.until( EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist > div > div > div:nth-child(1)')) ) html = self.browser.page_source content_text = etree.HTML(html) names = content_text.xpath('*//div[@class="pic"]/a/img/@alt') srcs = content_text.xpath('*//div[@class="pic"]/a/img/@data-src') totals = [(name, src) for (name, src) in zip(names, srcs)]

三、結果呈現

四、總結

本項目利用了selenium來完成數據的自動爬取,需要注意獲取的數據元素,以及數據信息。

重點在於彈出頁面的判斷以及對翻頁成功的判斷,其余的內容就是一般的數據爬取的方式。淘寶實戰需要對webdriver有一定的基礎和了解。才可以正確獲取到標簽內容。

webdriver的參考文檔:

https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains


免責聲明!

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



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