最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據抓取分析的示例代碼(python + mongodb)

 更新時間:2017年12月25日 13:42:49   作者:Rock_Song  
本篇文章主要介紹了python數(shù)據抓取分析的示例代碼(python + mongodb),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了Python數(shù)據抓取分析,分享給大家,具體如下:

編程模塊:requests,lxml,pymongo,time,BeautifulSoup

首先獲取所有產品的分類網址:

def step():
 try:
  headers = {
   。。。。。
   }
  r = requests.get(url,headers,timeout=30)
  html = r.content
  soup = BeautifulSoup(html,"lxml")
  url = soup.find_all(正則表達式)
  for i in url:
   url2 = i.find_all('a')
   for j in url2:
     step1url =url + j['href']
     print step1url
     step2(step1url)
 except Exception,e:
  print e 

我們在產品分類的同時需要確定我們所訪問的地址是產品還是又一個分類的產品地址(所以需要判斷我們訪問的地址是否含有if判斷標志):

def step2(step1url):
 try:
  headers = {
   。。。。
   }
  r = requests.get(step1url,headers,timeout=30)
  html = r.content
  soup = BeautifulSoup(html,"lxml")
  a = soup.find('div',id='divTbl')
  if a:
   url = soup.find_all('td',class_='S-ITabs')
   for i in url:
    classifyurl = i.find_all('a')
    for j in classifyurl:
      step2url = url + j['href']
      #print step2url
      step3(step2url)
  else:
   postdata(step1url)

當我們if判斷后為真則將第二頁的分類網址獲取到(第一個步驟),否則執(zhí)行postdata函數(shù),將網頁產品地址抓??!

def producturl(url):
 try:
  p1url = doc.xpath(正則表達式)
  for i in xrange(1,len(p1url) + 1):
   p2url = doc.xpath(正則表達式)
   if len(p2url) > 0:
    producturl = url + p2url[0].get('href')
    count = db[table].find({'url':producturl}).count()
    if count <= 0:
      sn = getNewsn()
      db[table].insert({"sn":sn,"url":producturl})
      print str(sn) + 'inserted successfully'
    else:
      'url exist'
 except Exception,e:
  print e

其中為我們所獲取到的產品地址并存入mongodb中,sn作為地址的新id。

下面我們需要在mongodb中通過新id索引來獲取我們的網址并進行訪問,對產品進行數(shù)據分析并抓取,將數(shù)據更新進數(shù)據庫內!

其中用到最多的BeautifulSoup這個模塊,但是對于存在于js的價值數(shù)據使用BeautifulSoup就用起來很吃力,所以對于js中的數(shù)據我推薦使用xpath,但是解析網頁就需要用到HTML.document_fromstring(url)方法來解析網頁。

對于xpath抓取價值數(shù)據的同時一定要細心!如果想了解xpath就在下面留言,我會盡快回答!

def parser(sn,url):
 try:
  headers = {
   。。。。。。
   }
  r = requests.get(url, headers=headers,timeout=30)
  html = r.content
  soup = BeautifulSoup(html,"lxml")
  dt = {}
  #partno
  a = soup.find("meta",itemprop="mpn")
  if a:
   dt['partno'] = a['content']
  #manufacturer
  b = soup.find("meta",itemprop="manufacturer")
  if b:
   dt['manufacturer'] = b['content']
  #description
  c = soup.find("span",itemprop="description")
  if c:
   dt['description'] = c.get_text().strip()
  #price
  price = soup.find("table",class_="table table-condensed occalc_pa_table")
  if price:
   cost = {}
   for i in price.find_all('tr'):
    if len(i) > 1:
     td = i.find_all('td')
     key=td[0].get_text().strip().replace(',','')
     val=td[1].get_text().replace(u'\u20ac','').strip()
     if key and val:
      cost[key] = val
   if cost:
    dt['cost'] = cost
    dt['currency'] = 'EUR'
  
  #quantity
  d = soup.find("input",id="ItemQuantity")
  if d:
   dt['quantity'] = d['value']
  #specs
  e = soup.find("div",class_="row parameter-container")
  if e:
   key1 = []
   val1= []
   for k in e.find_all('dt'):
    key = k.get_text().strip().strip('.')
    if key:
     key1.append(key)
   for i in e.find_all('dd'):
    val = i.get_text().strip()
    if val:
     val1.append(val)
   specs = dict(zip(key1,val1))
  if specs:
   dt['specs'] = specs
   print dt   
  if dt:
   db[table].update({'sn':sn},{'$set':dt})
   print str(sn) + ' insert successfully'
   time.sleep(3)
  else:
   error(str(sn) + '\t' + url)
 except Exception,e:
  error(str(sn) + '\t' + url)
  print "Don't data!"

最后全部程序運行,將價值數(shù)據分析處理并存入數(shù)據庫中!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python3中的re.findall()方法及re.compile()

    Python3中的re.findall()方法及re.compile()

    這篇文章主要介紹了Python3中的re.findall()方法及re.compile(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python基類函數(shù)的重載與調用實例分析

    Python基類函數(shù)的重載與調用實例分析

    這篇文章主要介紹了Python基類函數(shù)的重載與調用方法,實例分析了Python中基類函數(shù)的重載及調用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 如何基于Python和Flask編寫Prometheus監(jiān)控

    如何基于Python和Flask編寫Prometheus監(jiān)控

    這篇文章主要介紹了如何基于Python和Flask編寫Prometheus監(jiān)控,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Python多項式回歸的實現(xiàn)方法

    Python多項式回歸的實現(xiàn)方法

    這篇文章主要介紹了Python多項式回歸的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • python math模塊的基本使用教程

    python math模塊的基本使用教程

    這篇文章主要介紹了python math模塊的基本使用教程,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python3合并兩個有序數(shù)組代碼實例

    Python3合并兩個有序數(shù)組代碼實例

    這篇文章主要介紹了Python3合并兩個有序數(shù)組代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Matplotlib繪制雷達圖和三維圖的示例代碼

    Matplotlib繪制雷達圖和三維圖的示例代碼

    這篇文章主要介紹了Matplotlib繪制雷達圖和三維圖的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • Python中xmltodict庫的使用方法詳解

    Python中xmltodict庫的使用方法詳解

    在Python編程中,處理XML數(shù)據是一項常見且重要的任務,XML(可擴展標記語言)是一種用于存儲和傳輸數(shù)據的標記語言,Python的標準庫并不直接提供處理XML的便捷方法,因此我們需要借助第三方庫來實現(xiàn)這一功能,本文將詳細介紹xmltodict庫的使用,需要的朋友可以參考下
    2024-11-11
  • .dcm格式文件軟件讀取及python處理詳解

    .dcm格式文件軟件讀取及python處理詳解

    今天小編就為大家分享一篇.dcm格式文件軟件讀取及python處理詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 教你用Python3+mysql8.0搭建Django框架

    教你用Python3+mysql8.0搭建Django框架

    發(fā)現(xiàn)有很多小伙伴還不知道如何搭建Django框架,今天特地整理了本篇文章,基于Python3和mysql8.0,文中有非常詳細的步驟教程,對小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05

最新評論

古田县| 鞍山市| 开封县| 如皋市| 于田县| 岗巴县| 通化市| 万宁市| 巴东县| 锡林浩特市| 西畴县| 绵阳市| 颍上县| 庄浪县| 高淳县| 长武县| 沾化县| 乐昌市| 北流市| 达尔| 邓州市| 亳州市| 永安市| 修武县| 平阴县| 天等县| 白河县| 黑龙江省| 克什克腾旗| 界首市| 垦利县| 禄劝| 噶尔县| 宁阳县| 苍南县| 静乐县| 丹凤县| 芜湖县| 定兴县| 浙江省| 南部县|