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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产a一级毛片午夜剧院 | 男人把大ji巴放进男人免费视频 | 天使萌痴汉在线中文字幕 | 免费观看视频在线播放 | 花房乱爱在线观看 | 免费精品在线 | 国产视频91在线 | 精品亚洲视频在线观看 | 亚洲国产精品久久网午夜 | 天天综合色天天综合 | 丝袜老师好湿好紧我要进去了 | 日韩精品一区二三区中文 | 日韩经典在线 | 99精品国产自在现线观看 | 成人精品一区二区三区中文字幕 | 韩剧在线免费观看 | 欧美久在线观看在线观看 | 亚洲 激情| 亚洲久草在线 | 欧美va免费精品高清在线 | 亚洲狠狠婷婷综合久久久久网站 | 跪在老师脚下吃丝袜脚 | 国产在线视频资源 | 国产一区二区三区在线看片 | 亚洲精品www久久久久久久软件 | 999热这里只有精品 999久久久免费精品国产牛牛 | 日韩亚洲欧美综合一区二区三区 | 四虎影院久久 | 91麻豆精品国产 | 色综合伊人色综合网亚洲欧洲 | 久久精品国产视频澳门 | 国产精品久久久久久久久免费hd | 免费理伦片手机在线播放 | 亚洲欧美日韩另类精品一区二区三区 | 女人张开腿让男人桶视频免费大全 | 国产精品色片 | jizz漫画| 99国产精品免费视频 | 四虎小视频 | 日韩大片免费看 | 呜呜别塞了啊抽插 |