python正则表达式爬取猫眼电影top100
用正则表达式爬取猫眼电影top100,具体内容如下
#!/usr/bin/python
#-*-coding:utf-8-*-
importjson#快速导入此模块:鼠标先点到要导入的函数处,再Alt+Enter进行选择
frommultiprocessing.poolimportPool#引入进程池
importrequests
importre
importcsv
fromrequests.exceptionsimportRequestException#引入异常
##正确保存,无丢失
#请求一个页面返回响应内容
#以《霸王别姬》为列,右击—查看元素—会显示一个网页信息
defget_one_page(url,offset):
try:
response=requests.get(url=url,params={"offset":offset})
ifresponse.status_code==200:#由状态码判断返回结果,200表示请求成功,300,500表出错
returnresponse.text#返回网页内容
else:returnNone
exceptRequestExceptionase:
returnNone
#解析一个页面
defparse_one_page(html):
pattern=('保存到数据库
defmain(offset):
url='http://maoyan.com/board/4?offset='+str(offset)
html=get_one_page(url)
#foriteminparse_one_page(html):
#print(item['number'])#能正确输出,charset="utf8"
try:
conn=pymysql.connect(host='localhost',user='root',passwd='',port=3306,db='test1',charset="utf8",use_unicode=False)
cur=conn.cursor()#创建一个游标对象
foriteminparse_one_page(html):
try:
#sql="INSERTINTOmovies(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="insertintotest_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']))
exceptpymysql.Errorase:
print(e)
print('-----数据保存成功-----')
conn.commit()
cur.close()
conn.close()#关闭数据
exceptpymysql.Errorase:
print("MysqlError%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("DROPTABLEIFEXISTStest_movies")#如果表存在则删除
#创建表sql语句
sqlc="""CREATETABLEtest_movies(
numberintnotnullprimarykeyauto_increment,
pictureVARCHAR(100)NOTNULL,
titleVARCHAR(100)NOTNULL,
actorsVARCHAR(200)NOTNULL,
timeVARCHAR(100)NOTNULL,
areaVARCHAR(100),
scoreVARCHAR(50)NOTNULL
)"""
cur.execute(sqlc)#执行创建数据表操作
pool=Pool()
pool.map(main,[i*10foriinrange(10)])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。