python网页数据抓取(Python数据抓取分析-本文本文的全部内容)

优采云 发布时间: 2021-12-21 00:27

  python网页数据抓取(Python数据抓取分析-本文本文的全部内容)

  本文介绍Python数据采集与分析,分享给大家,如下:

  编程模块:requests、lxml、pymongo、time、BeautifulSoup

  首先获取所有产品的类别 URL:

  

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判断为true时,我们将获取第二页的类别URL(第一步),否则我们将执行postdata函数来抓取网页的产品地址!

  

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 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!"

  最后运行所有程序,对数值数据进行分析处理并存入数据库!

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持面圈教程。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线