抓取网页数据(Python数据抓取分析编程模块:requests.document_fromstring(url))

优采云 发布时间: 2022-02-09 01:41

  抓取网页数据(Python数据抓取分析编程模块:requests.document_fromstring(url))

  Python数据抓取分析

  编程模块: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判断为真时,会得到第二个页面的分类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!"

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

  以上就是本文详细介绍python+mongodb数据爬取的全部内容,希望对大家有所帮助。有兴趣的朋友可以继续参考本站:Python探索创建二叉树、Python探索修改Python搜索路径、说说python中copy和deepcopy的区别等,如有疑问请留言交流和讨论。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线