您的位置:首页 > 编程语言 > Python开发

【python】研究与实践 python线程池爬取某网的接口视频资源入库

2016-11-20 11:09 357 查看

研究与实践 python线程池爬取某网的接口视频资源入库

Python(派森),它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python语言的最简单的描述。
python 是一种解释性脚本语言,不像c++/java那样的高级语言,需要编译成字节码之后才能运行,python可以边运行边解释。
python主要应用于以下几个领域:
web开发,基于python产生了许多优秀的web框架,许许多多伟大的开源社区的程序员为它们贡献了诸多的开源库,

使得开发起来十分便捷。爬虫开发,实际上这个只是一个小小的应用,基于python的http库有很多, 
比如常见的httplib,urllib2,requests等,都很好的封装了http协议中的post,get等方法,也很方便的能够模拟浏览
器去实现自己想要的功能,并且,对网页的解析也有诸多工具可以使用,如beautifulsoup等。科学计算,不得不提是
python在科学计算领域也应用越来越广,如物理学领域,各种的实验数据的处理以及相关实验模拟等,机器学习领域
也产生了诸多的开源库,如sklearn,里面集成了机器学习领域常见的算法,接口良好,文档丰富,也有最近十分火热
的Deep Learning的开源库,如theano。高性能服务器后端,高性能不是说python执行有多快,其实python还是比
较慢的,但是在开发高并发,高吞吐率的服务器的时候,还是具有自己独特的优势。还有一切边边角角的应用,

比如开发界面程序,QT也提供了python的支持,因为python的开源库中包括了对c/c++ lib库的调用。

# -*-coding:utf8-*-

from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import requests
import time
import sys
import re
import json
import MySQLdb

reload(sys)

sys.setdefaultencoding('utf-8')

urls = []

head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36'
}

time1 = time.time()

for i in range(1,10000):
url = 'https://domain.com/video/' + str(i)
urls.append(url)

def spider(url):
html = requests.get(url, headers=head)
json_url = url
jsoncontent = requests.get(json_url, headers=head).content
jsDict = json.loads(jsoncontent)
if jsDict['code'] == 0:
jsData = jsDict['data']
vtitle = jsData['vtitle']
play_count = jsData['play_count']
date_add = jsData['date_add']

try:
conn = MySQLdb.connect(host='localhost', user='', passwd='',
port=3306, charset='utf8')
cur = conn.cursor()
conn.select_db('db')
cur.execute(
'INSERT INTO videos( url, json, vtitle, play_count,datetime) VALUES '
'(%s,%s,%s,%s,%s)',
[  str(json_url), str(jsData), vtitle,play_count,date_add])
conn.commit()
print "Succeed: " + str(urls)
except MySQLdb.Error, e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
else:
print "Error_Json: " + url

pool = ThreadPool(10)
# results = pool.map(spider, urls)
try:
results = pool.map(spider, urls)
except Exception, e:
# print 'ConnectionError'
print e
time.sleep(300)
results = pool.map(spider, urls)

pool.close()
pool.join()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 视频 web 优化