亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python使用Selenium模塊實現模擬瀏覽器抓取淘寶商品美食信息功能

2020-02-15 22:26:02
字體:
來源:轉載
供稿:網友

本文實例講述了Python使用Selenium模塊實現模擬瀏覽器抓取淘寶商品美食信息功能。分享給大家供大家參考,具體如下:

import refrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.common.exceptions import TimeoutExceptionfrom pyquery import PyQuery as pqfrom bs4 import BeautifulSoupfrom pymongo import MongoClientfrom pymongo.errors import PyMongoErrorurl = 'http://www.taobao.com'KEYWORD = '美食'# monogdb配置信息MONGO_HOST = "localhost"MONGO_DATABASE = "taobao"MONGO_TABLE = "meishi"client = MongoClient(host=MONGO_HOST)db = client[MONGO_DATABASE]# PhantomJS 命令行相關配置# 參見 http://phantomjs.org/api/command-line.htmlSERVICE_ARGS = ['--disk-cache=true', '--load-images=false']# driver = webdriver.Chrome() # 有界面driver = webdriver.PhantomJS(service_args=SERVICE_ARGS) # 無界面delay = 10wait = WebDriverWait(driver, delay)# print('windows size', driver.get_window_size())# PhantomJs()的瀏覽器窗口很小,寬高只有400 * 300driver.maximize_window() # 窗口最大化 # 對于PhantomJS來說設置窗口大小很關鍵,如果不設置,經常會出現問題# driver.set_window_size(1920, 1080) # 設置瀏覽器窗口大小# 模擬在淘寶網頁中輸入關鍵字搜索def search():  print("準備搜索 %s" % KEYWORD)  try:    driver.get(url)    input_box = wait.until(      EC.presence_of_element_located((By.CSS_SELECTOR, "input#q"))    )    search_btn = wait.until(EC.element_to_be_clickable(      (By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))    input_box.send_keys(KEYWORD)    search_btn.click()    total_page_str = wait.until(      EC.presence_of_element_located(        (By.CSS_SELECTOR, 'div.total'))).text    total_page_num = int(re.search("(/d+)", total_page_str).group(1))    item_list = get_goods_by_beautifulsoup()    save_to_mongodb(item_list)    return total_page_num  except TimeoutError:    print("搜索%s超時", KEYWORD)    print("重新嘗試搜索: %s", KEYWORD)    search()# 根據頁碼獲取指定頁數據,并將其保存到數據庫中def get_page(page_num):  print("正在獲取第%d頁數據" % page_num)  try:    page_num_box = wait.until(      EC.presence_of_element_located(        (By.CSS_SELECTOR, "div.form > input")))    ok_btn = wait.until(EC.element_to_be_clickable(      (By.CSS_SELECTOR, 'div.form > span.btn.J_Submit')))    page_num_box.clear()    page_num_box.send_keys(page_num)    ok_btn.click()    wait.until(      EC.text_to_be_present_in_element(        (By.CSS_SELECTOR,         'li.item.active > span.num'),        str(page_num)))    item_list = get_goods_by_beautifulsoup()    save_to_mongodb(item_list)  except TimeoutException:    print("請求第%d頁失敗" % page_num)    print("嘗試重新獲取第%d頁" % page_num)    return get_page(page_num)def get_goods_by_pyquery():  '''  通過pyquery庫解析數據  獲取商品的圖片url、價格、標題、成交量、店鋪名稱、店鋪位置  '''  wait.until(EC.presence_of_element_located(    (By.CSS_SELECTOR, "#mainsrp-itemlist .items .item")))  html = driver.page_source  doc = pq(html)  items = list(doc('#mainsrp-itemlist .items .item').items())  for item in items:    yield {      # 不要用src屬性,獲取的圖片地址很多是.gif圖片,而非真實商品圖片,      'image': 'http://' + item.find('.J_ItemPic.img').attr('data-src'),      'price': item.find('.price').text(),      'title': item.find('.row > .J_ClickStat').text().strip(),      'deal_cnt': item.find('.deal-cnt').text()[:-3],      'shop': item.find('.shop').text(),      'location': item.find('.location').text(),    }# 通過bs4解析數據def get_goods_by_beautifulsoup():  '''  通過bs4庫解析數據  獲取商品的圖片url、價格、標題、成交量、店鋪名稱、店鋪位置  '''  wait.until(EC.presence_of_element_located(    (By.CSS_SELECTOR, "#mainsrp-itemlist .items .item")))  html = driver.page_source  soup = BeautifulSoup(html, 'lxml')  items = soup.select('#mainsrp-itemlist .items .item')  for item in items:    yield {      'image': 'http:' + item.select('img.J_ItemPic.img')[0]['data-src'],      'price': item.select('div.price.g_price.g_price-highlight')[0].get_text(strip=True),      'title': item.select('div.row.row-2.title > a.J_ClickStat')[0].get_text(strip=True),      'deal_cnt': item.select('div.deal-cnt')[0].text[:-3],      'shop': item.select('div.shop > a')[0].get_text(strip=True),      'location': item.select('div.location')[0].text,    }def save_to_mongodb(item_list):  for item in item_list:    try:      db[MONGO_TABLE].insert(item)  # insert支持插入多條數據      print("mongodb插入數據成功:", item)    except PyMongoError as e:      print("mongodb插入數據失敗:", item, e)# 獲取淘寶美食的圖片url、價格、標題、成交量、店鋪名稱、店鋪位置并將結果保存在mongodb數據庫中if __name__ == '__main__':  try:    total_pages = search()    for page_num in range(2, total_pages + 1):      get_page(page_num)  except Exception as e:    print("出錯了", e)  finally: # 確保 瀏覽器能正常關閉    driver.close()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品一区在线播放| 久久精品一偷一偷国产| 久久久久国产视频| 国产精品成人久久久久| 欧美性猛交视频| 欧美与欧洲交xxxx免费观看| 欧美精品性视频| 欧美视频在线观看免费| 中文字幕九色91在线| 久久久久久九九九| 亚洲国产成人精品久久久国产成人一区| 欧美精品999| 久久久久久久网站| 欧洲精品毛片网站| 一个人www欧美| 国产精品私拍pans大尺度在线| 亚洲精品v欧美精品v日韩精品| 91精品久久久久久综合乱菊| 黑人与娇小精品av专区| 亚洲国产精品高清久久久| 91高潮精品免费porn| 日韩欧美主播在线| 7777kkkk成人观看| 日韩有码在线电影| 中文精品99久久国产香蕉| 欧洲成人性视频| 成人在线国产精品| 久久久视频免费观看| 久久精品青青大伊人av| 国产精品高清网站| 92国产精品久久久久首页| 欧美精品精品精品精品免费| 久久免费精品日本久久中文字幕| 日韩中文字幕免费| 国产69精品久久久久99| 97婷婷大伊香蕉精品视频| 欧美裸体视频网站| 福利一区视频在线观看| 一区二区三区久久精品| 97精品国产91久久久久久| 欧洲永久精品大片ww免费漫画| 精品国产一区二区三区久久久狼| 91在线观看免费网站| 91爱爱小视频k| 日韩av综合中文字幕| 欧美性猛交99久久久久99按摩| 国产精品高潮呻吟视频| 欧美性猛交xxxx免费看久久久| 日韩动漫免费观看电视剧高清| 尤物九九久久国产精品的分类| 欧美日韩一区二区免费在线观看| 91九色国产社区在线观看| 久热精品视频在线| 国内外成人免费激情在线视频| 欧美在线中文字幕| 成人福利网站在线观看11| 成人免费视频在线观看超级碰| 国产精品夜间视频香蕉| 久久精品国产清自在天天线| 国产精品99免视看9| 亚洲a级在线播放观看| 久久在线观看视频| 亚洲国内精品在线| 欧美激情欧美激情在线五月| 精品国产视频在线| 亚洲女人被黑人巨大进入al| 国产精品免费在线免费| 国产精品日韩在线播放| 国产精品免费视频久久久| 国产精品爱啪在线线免费观看| 久久九九热免费视频| 亚洲精品成人av| 国产成人亚洲综合青青| 亚洲欧美制服另类日韩| 国产成人精品久久亚洲高清不卡| 91超碰中文字幕久久精品| 亚洲日本欧美日韩高观看| 91国自产精品中文字幕亚洲| 精品无人区乱码1区2区3区在线| 88xx成人精品| 亚洲高清不卡av| 日韩在线中文字| 亚洲一区二区日本| 欧美日韩免费一区| 国产成人精品优优av| 在线一区二区日韩| 中文字幕日韩在线视频| 欧美国产乱视频| 国产精品成av人在线视午夜片| 91网站在线看| 日韩欧美高清视频| 亚洲精品国产品国语在线| 日韩中文字幕精品| 国产精品私拍pans大尺度在线| 欧美视频中文在线看| 操日韩av在线电影| 欧美在线视频一区二区| 一区二区在线免费视频| 正在播放亚洲1区| 久久激情视频免费观看| 精品福利在线视频| 久久亚洲春色中文字幕| 亚洲欧美日韩国产中文专区| www.午夜精品| 国产主播喷水一区二区| 久久香蕉国产线看观看网| 亚洲影院色无极综合| 欧美精品videosex牲欧美| 欧洲中文字幕国产精品| 美女视频久久黄| 国产精品午夜国产小视频| 中文字幕综合一区| 日韩亚洲欧美中文在线| 成人免费观看网址| 国产视频在线观看一区二区| 国产高清视频一区三区| 国产欧美精品日韩精品| 精品亚洲国产成av人片传媒| 伊人久久久久久久久久久| 91在线视频成人| 日韩av资源在线播放| 蜜臀久久99精品久久久无需会员| 亚洲一区二区三区成人在线视频精品| 日韩电影中文字幕| 亚洲天堂网在线观看| 隔壁老王国产在线精品| 欧美日韩午夜激情| 日本一欧美一欧美一亚洲视频| 亚洲成人久久一区| 黑人精品xxx一区一二区| 国产精品91久久久久久| 久久久99久久精品女同性| 国产第一区电影| 久久免费福利视频| 97国产精品人人爽人人做| 欧美一区在线直播| 午夜精品久久久久久久99黑人| 欧美贵妇videos办公室| 亚洲精品456在线播放狼人| 亚洲精品午夜精品| 俺也去精品视频在线观看| 成人黄色av网站| xx视频.9999.com| 欧美黄色www| 色黄久久久久久| 亚洲精品日韩av| 精品欧美激情精品一区| 91精品国产91久久久久| 欧美日韩免费区域视频在线观看| 欧美日韩人人澡狠狠躁视频| 91免费精品视频| 日本精品视频网站| 亚洲精品福利视频| 性日韩欧美在线视频| 亚洲美女www午夜| 疯狂蹂躏欧美一区二区精品| 欧美裸体xxxx极品少妇软件| 国产精品国产三级国产aⅴ浪潮| 色综合久久久久久中文网| 国产精品久久久久久av福利软件| 日本高清视频精品| 日韩久久免费视频| 亚洲女人天堂色在线7777| 欧美日韩国产影院|