selenium實現淘寶的商品爬取

1、問題html

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

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

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

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

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

 

2、解決google

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

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

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

     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)]

 

3、結果呈現

 

4、總結

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

重點在於彈出頁面的判斷以及對翻頁成功的判斷,其他的內容就是通常的數據爬取的方式。淘寶實戰須要對webdriver有必定的基礎和了解。才能夠正確獲取到標籤內容。

webdriver的參考文檔:

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

相關文章
相關標籤/搜索