南强小屋 Design By 杰米
用正则表达式爬取猫眼电影top100,具体内容如下
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json # 快速导入此模块:鼠标先点到要导入的函数处,再Alt + Enter进行选择
from multiprocessing.pool import Pool #引入进程池
import requests
import re
import csv
from requests.exceptions import RequestException #引入异常
## 正确保存,无丢失
# 请求一个页面返回响应内容
#以《霸王别姬》为列,右击—查看元素—会显示一个网页信息
def get_one_page(url,offset):
try:
response=requests.get(url=url,params={"offset":offset})
if response.status_code==200: #由状态码判断返回结果,200表示请求成功,300,500表出错
return response.text #返回网页内容
else:return None
except RequestException as e:
return None
# 解析一个页面
def parse_one_page(html):
pattern = ('<dd>.*"(.*".*"><a'
+ '.*?>(.*">(.*">(.*">(.*">(.*"releasetime">上映时间:1993-01-01(中国香港)</p>
def get_release_time(data):
pattern = '^(.*"\t"参数指写入的时候的分隔符
csv_writer = csv.writer(data_csv)
csv_writer.writerow([item['index'], item['image'], item['title'], item['actor'],item['time'],item['area'],item['score']])
# 参数newline是用来控制文本模式之下,一行的结束字符。可以是None,'',\n,\r,\r\n等。
'''''
也可判断异常,一般没错
try:
csv_writer = csv.writer(data_csv)
csv_writer.writerow([item['index'], item['image'], item['title'], item['actor'],item['time'],item['area'],item['score']])
except Exception as e:
print(e)
print(item)
'''
# 下载封面图
#读方式打开的话,并不会新建;写方式打开的话就会新建。 r只读,w可写,a追加
def download_thumb(title,image):
try:
response = requests.get(image)
# 获取二进制数据
with open('image/'+title+'.jpg', 'wb') as f: #将封面图保存到当前路径下的image文件夹中,图片名称为:电影名.jpg
f.write(response.content)
f.close()
except RequestException as e:
print(e)
pass
# 主调度程序
def main():
# 起始URL
start_url = 'http://maoyan.com/board/4"htmlcode">
def main(offset):
url='http://maoyan.com/board/4"utf8"
try:
conn = pymysql.connect(host='localhost', user='root', passwd=' ', port=3306,db='test1',charset="utf8",use_unicode = False )
cur = conn.cursor() # 创建一个游标对象
for item in parse_one_page(html):
try:
# sql = "INSERT INTO movies (number,picture,title,actors,time,area,score) VALUES (%s,%s,%s,%s,%s,%s,%s)"
# cur.execute(sql, ( item['number'],item['picture'],item['title'],item['actors'],item['time'],item['area'],item['score']))
sql = "insert into test_movies (number,picture,title,actors,time,area,score) values(%s,%s,%s,%s,%s,%s,%s)"
cur.execute(sql, (item['number'], item['picture'], item['title'], item['actors'], item['time'], item['area'],item['score']))
except pymysql.Error as e:
print(e)
print('- - - - - 数据保存成功 - - - - -')
conn.commit()
cur.close()
conn.close() # 关闭数据
except pymysql.Error as e:
print("Mysql Error %d: %s" % (e.args[0], e.args[1]))
if __name__=='__main__':
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', passwd=' ', port=3306, db='test1', charset="utf8")
cur = conn.cursor() # 创建一个游标对象
cur.execute("DROP TABLE IF EXISTS test_movies") # 如果表存在则删除
# 创建表sql语句
sqlc = """CREATE TABLE test_movies(
number int not null primary key auto_increment,
picture VARCHAR(100) NOT NULL,
title VARCHAR(100) NOT NULL,
actors VARCHAR(200) NOT NULL,
time VARCHAR(100) NOT NULL,
area VARCHAR(100) ,
score VARCHAR(50) NOT NULL
)"""
cur.execute(sqlc) # 执行创建数据表操作
pool=Pool()
pool.map(main,[i*10 for i in range(10)])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无python正则表达式爬取猫眼电影top100的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。