设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

Python 实战(5):拿来主义

[复制链接]

0

主题

0

好友

74

积分

注册会员

Rank: 2

51#
发表于 2017-11-30 19:52:49 |只看该作者
crossin先生 发表于 2017-11-27 01:35
是的

这个你其实通过输出就可以看出,不清楚的变量都可以输出出来看

先生,这里抓取到的movie_ids中,为什么是用u'  ’表示呢?
回复

使用道具 举报

0

主题

0

好友

114

积分

注册会员

Rank: 2

52#
发表于 2017-12-1 17:19:11 |只看该作者
13253620252 发表于 2017-11-30 19:52
先生,这里抓取到的movie_ids中,为什么是用u'  ’表示呢?

这个u表示将后面跟的字符串以unicode格式存储
回复

使用道具 举报

4

主题

0

好友

98

积分

注册会员

Rank: 2

53#
发表于 2017-12-4 19:13:42 |只看该作者
  =-=python3.6,web模块模式没有了,安装也总失败,flask也装不上QAQ
import urllib也变成import urllib.request
=-=萌新好头大哟
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

54#
发表于 2017-12-4 19:35:41 |只看该作者
小可爱 发表于 2017-12-4 19:13
=-=python3.6,web模块模式没有了,安装也总失败,flask也装不上QAQ
import urllib也变成import urllib.re ...

我之前用python3.7 web.py不行,CherryPy也失败,tornado也安装失败。。今天下午卸载了3.7 现在安3.6也失败。。。要崩溃了
回复

使用道具 举报

0

主题

0

好友

137

积分

注册会员

Rank: 2

55#
发表于 2017-12-14 11:32:51 |只看该作者
先生,我在虚拟机上面运行了web.py,运行的终端就相当于一个服务器吗? 我能在虚拟机以外的网络访问这个电影网站吗?比如我在运行虚拟机的主机上好像就不能打开那个网站了。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

56#
发表于 2017-12-14 14:18:25 |只看该作者
zhaolehua 发表于 2017-12-14 11:32
先生,我在虚拟机上面运行了web.py,运行的终端就相当于一个服务器吗? 我能在虚拟机以外的网络访问这个电 ...

你要确保网络是连通的,虚拟机的网络有几种设置,如果是选择作为局域网中的一台电脑,有独立内网ip,就可以访问。桥接模式不行
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

137

积分

注册会员

Rank: 2

57#
发表于 2017-12-14 14:39:48 |只看该作者
crossin先生 发表于 2017-12-14 14:18
你要确保网络是连通的,虚拟机的网络有几种设置,如果是选择作为局域网中的一台电脑,有独立内网ip,就可 ...

难怪咯,我是用的桥接模式。
回复

使用道具 举报

0

主题

0

好友

20

积分

新手上路

Rank: 1

58#
发表于 2018-2-6 17:11:39 |只看该作者
crossin先生 发表于 2015-6-2 23:11
是不是数据库没抓全?你去sqlite里面看看数据

我也有遇到,抓取数据时会有找不到数据的情况,然后程序就停止了,这种不知道怎么处理下跳过该数据继续执行呢?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

59#
发表于 2018-2-7 17:02:58 |只看该作者
qiqibaoer 发表于 2018-2-6 17:11
我也有遇到,抓取数据时会有找不到数据的情况,然后程序就停止了,这种不知道怎么处理下跳过该数据继续执 ...

异常处理
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

2

主题

0

好友

476

积分

中级会员

Rank: 3Rank: 3

60#
发表于 2018-5-19 17:18:55 |只看该作者
#-*-coding: utf-8 -*-
#D:\ProgramData\Anaconda3\envs\py36\python.exe code.py 127.0.0.1
import web
import urllib.request
import json
import time

urls = (
    '/', 'index',
    '/movie/(\d+)', 'movie',
)

render = web.template.render('templates/')

#web.py 连接 SQLite
db = web.database(dbn='sqlite', db='MovieSite.db')

def add_movie(data):
    movie = json.loads(data)
    #print (movie['title'])
db.insert('movie',
        id = int(movie['id']),
        title = movie['title'],
        origin = movie['original_title'],
        url = movie['alt'],
        rating = movie['rating']['average'],
        image = movie['images']['large'],
        directors = ','.join([d['name'] for d in movie['directors']]),
        casts = ','.join([c['name'] for c in movie['casts']]),
        year = movie['year'],
        genres = ','.join(movie['genres']),
        countries = ','.join(movie['countries']),
        summary = movie['summary'],
    )

def movie_exist(data):
    movie = json.loads(data)
    n_id = int(movie['id'])
    pass
class index:
    def GET(self):
        movies = db.select('movie')
        return render.index(movies)

    def POST(self):
        data = web.input()
        condition = r'title like "%' + data.title + r'%"'
movies = db.select('movie', where=condition)
        return render.index(movies)

class movie:
    def GET(self, movie_id):
        condition = 'id=' + movie_id
        movie = db.select('movie', where=condition)[0]
        return render.movie(movie)


movie_ids = []
for index in range(0, 250, 50):
    response = urllib.request.urlopen('http://api.douban.com/v2/movie/top250?start=%d&count=50' % index)
    data = response.read()
    data_json = json.loads(data)
    movie250 = data_json['subjects']
    for movie in movie250:
        movie_ids.append(movie['id'])
        #print(movie['id'], movie['title'])
time.sleep(3)
#print(movie_ids)
count = 0
for mid in movie_ids:
    #print (count, mid)
try:
        response = urllib.request.urlopen('http://api.douban.com/v2/movie/subject/%s' % mid)
        data = response.read()
        add_movie(data)
        count += 1
        time.sleep(3)
    except:
        print('movie %s is not found' % mid)

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

第一次从头开始sqlite3 MovieSite.db
create table movie (id, title, origin, url, rating, image, directors, casts, year, genres, countries, summary);然后运行上面的程序,进入网页报错
无标题5.jpg 无标题4.jpg
第二次把获取movie_ids和存入数据库的两段注释掉,再运行,就可以正常显示网页了(虽然也没全部抓取到,只有90多个)
麻烦老师看下这会是什么问题?



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-25 03:15 , Processed in 0.019706 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部