爬蟲之selenium-無介面瀏覽器使用
阿新 • • 發佈:2018-12-20
selenium+phantomjs selenium是什麼?是一個瀏覽器的自動化測試工具,就是通過寫程式碼去操作瀏覽器,讓瀏覽器做一些自動化的工作 selenium如何操作谷歌瀏覽器 安裝selenium,pip install selenium 步驟:selenium操作谷歌瀏覽器,其實是操作谷歌瀏覽器的驅動,由驅動再去驅動瀏覽器 谷歌瀏覽器驅動下載地址 http://chromedriver.storage.googleapis.com/index.html http://npm.taobao.org/mirrors/chromedriver/ http://blog.csdn.net/huilan_same/article/details/51896672
from lxml import etree from selenium import webdriver import json import time from selenium.webdriver.chrome.options import Options # 獲取沒頁面內容 def save_content(driver, fp): response1 = driver.page_source tree1 = etree.HTML(response1) a_href_list = tree1.xpath('//ul[@class="gl-warp clearfix"]/li//div[@class="p-img"]/a/@href') chrome_options1 = Options() chrome_options1.add_argument('--headless') chrome_options1.add_argument('--disable-gpu') driver1 = webdriver.Chrome(executable_path=r'F:\chromedriver.exe', chrome_options=chrome_options1) for a_href in a_href_list: a_href = 'http:' + a_href driver1.get(url=a_href) response2 = driver1.page_source tree2 = etree.HTML(response2) # get_attribute 獲取屬性 # text 獲取文字 C_name = driver1.find_element_by_xpath('.//div[@class="sku-name"]').text # 獲取電腦基本資訊 C_price = driver1.find_element_by_xpath('.//div[@class="dd"]/span/span[2]').text # 獲取電腦報價 C_style = driver1.find_element_by_xpath('.//div[@id="store-prompt"]/strong').text # 獲取商品狀態 C_image = driver1.find_element_by_xpath('.//div[@id="preview"]//img').get_attribute( 'src') # 獲取電腦圖片 # 商品品牌 C_brand = tree2.xpath('//ul[@id="parameter-brand"]/li/@title')[0] # 商品編號 C_styleid = tree2.xpath('//ul[@class="parameter2 p-parameter-list"]/li[2]/text()')[0].strip('商品編號:') # 商品產地 C_origin = tree2.xpath('//ul[@class="parameter2 p-parameter-list"]/li[4]/text()')[0].strip('商品產地:') item = { '商品圖片': C_image, '商品資訊概括': C_name, '商品品牌': C_brand, '商品價格': C_price, '商品編號': C_styleid, '商品產地': C_origin, '商品狀態': C_style, } string = json.dumps(item, ensure_ascii=False) fp.write(string + '\n') print('正在下載%s' % C_name) def run(): chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') driver = webdriver.Chrome(executable_path=r'F:\第四階段\day06\day06_pm\ziliao\chromedriver.exe', chrome_options=chrome_options) driver.get("https://list.jd.com/list.html?cat=670%2C671%2C672&go=0") time.sleep(3) # 每次傳送完請求等待三秒,等待頁面載入完成 # 請求首頁 # 1.傳送首頁的請求 # 2.獲取第一頁的資訊 fp = open("jd.txt", "w", encoding='utf8') # 儲存內容 save_content(driver,fp) # 3.迴圈 點選下一頁按鈕,知道下一頁對應的class名字不再是"pn-next" while driver.find_element_by_class_name("pn-next"): # 判斷有沒有下一頁 # 點選下一頁的按鈕 driver.find_element_by_class_name("pn-next").click() # # 4.繼續獲取下一頁的內容,儲存內容 save_content(driver,fp) # 走到這認為沒有下一頁,關閉檔案 fp.close() if __name__ == "__main__": run()