一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python數據抓取分析的示例代碼(python + mongodb)

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

2020-12-28 00:44Rock_Song Python

本篇文章主要介紹了python數據抓取分析的示例代碼(python + mongodb),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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判斷標志):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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判斷后為真則將第二頁的分類網址獲取到(第一個步驟),否則執行postdata函數,將網頁產品地址抓取!

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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索引來獲取我們的網址并進行訪問,對產品進行數據分析并抓取,將數據更新進數據庫內!

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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!"

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

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

原文鏈接:http://www.cnblogs.com/zhuPython/p/7724242.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色中色破解版 | 国内精品哆啪啪 | 亚洲免费福利视频 | 亚洲 欧美 成人 | 成人软件18免费 | 美女扒开腿让男人桶爽动态图片 | 免费在线电视 | 91精品乱码一区二区三区 | 国产精品日本一区二区三区在线看 | ass亚洲熟妇毛茸茸pics | 免费看www | 亚洲女bbwxxxx另类 | 苍井空色欲迷墙 | 91精品国产9l久久久久 | 精品国产视频 | 日本在线一区 | 无人区在线观看免费完整版免费 | 日本大片免aaa费观看视频 | 动漫美女被褥吸奶漫画漫画 | 青青热久免费精品视频网站 | 男生操女生的漫画 | 成年人天堂 | 欧美综合精品一区二区三区 | 好紧好爽的午夜寂寞视频 | 欧美午夜性春猛交bbb | 18hdxxxx中国 | 美女脱了内裤打开腿让人羞羞软件 | 青草影院在线观看 | 亚洲www美色| 3d美女触手怪爆羞羞漫画 | a天堂在线视频 | 翁息肉小说老扒 | 日本欧美一二三区色视频 | 亚洲国产情侣偷自在线二页 | 成年极品漫画在线观看 | 草莓视频丝瓜 | 国产九九热视频 | 免费看美女被靠到爽 | 日本红怡院亚洲红怡院最新 | 国产馆精品推荐在线观看 | 日本加勒比在线精品视频 |