突破淘宝对于selenium检测
生活随笔
收集整理的這篇文章主要介紹了
突破淘宝对于selenium检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
去年11月之前淘寶對于selenium還是很友好的,后來selenium被檢測了window.navigator.webdriver 等參數,出滑動驗證碼什么的,selenium已經很難用了,? 網上大片教程都使用的pyppeteer 修改檢測js參數去采集, 我也用了一段時間, 但是發現chromium占用內存太高,并且pyppeteer參數方法介紹太少,用起來不舒服,本文介紹了另一種方法:使用selenium接管現有瀏覽器
利用Chrome DevTools協議。它允許客戶檢查和調試Chrome瀏覽器。
打開cmd,在命令行中輸入命令:
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"對于-remote-debugging-port值,可以指定任何打開的端口。
? ? ? 對于-user-data-dir標記,指定創建新Chrome配置文件的目錄。它是為了確保在單獨的配置文件中啟動chrome,不會污染你的默認配置文件。
? ? ? 還有,不要忘了在環境變量中PATH里將chrome的路徑添加進去。
此時會打開一個瀏覽器頁面,我們輸入淘寶網址,我們把它當成一個已存在的瀏覽器:
?
接下來我們先登錄,因為是真實瀏覽器,所以淘寶是沒辦法檢測的,后面就用腳本去接手這個瀏覽器,采集即可,隨便貼上一段demo.
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.action_chains import ActionChains chrome_options = Options() chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")driver = webdriver.Chrome(chrome_options=chrome_options) print(driver.title)#當前句柄 current = driver.current_window_handledriver.execute_script('window.open("http://www.baidu.com")')#所有句柄 heandles = driver.window_handles secondhand = heandles[-1]#切回first driver.switch_to.window(current)page_num = 0 while page_num < 15:print(page_num+1)url = 'https://s.taobao.com/search?spm=a21bo.2017.201856-fline.3.5af911d9CJTHFx&q=T%E6%81%A4&refpid=420462_1006&source=tbsy&style=grid&tab=all&pvid=d0f2ec2810bcec0d5a16d5283ce59f67&bcoffset=0&p4ppushleft=3%2C44&s={0}'.format(44*page_num)driver.get(url)time.sleep(3)page_list = driver.find_elements_by_xpath('//div[@id = "mainsrp-itemlist"]/div[@class="m-itemlist"]/div/div[@class="items"]/div')print(page_list)if page_list:for pageli in page_list:#切第二個標簽頁item_url = pageli.find_element_by_xpath('./div[1]/div[1]/div[1]/a[@class="pic-link J_ClickStat J_ItemPicA"]').get_attribute('href')if not re.findall('http', item_url):item_url = 'https:' + item_urlprint(item_url)driver.switch_to.window(secondhand)driver.get(item_url)time.sleep(5)print(driver.title)driver.switch_to.window(current)else:#切回第一頁driver.switch_to.window(current)page_num +=1time.sleep(2.5)?
總結
以上是生活随笔為你收集整理的突破淘宝对于selenium检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [css] 假如css的分号写在声明块
- 下一篇: [css] padding会影响到元素