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)])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。