不多說,直接上**:
import requests
import re
import random
import pymysql
import time
# ------連線資料庫
db = pymysql.connect(host='localhost', port=3306,
user='root', passwd='a', db='python', charset='utf8')
cursor=db.cursor()
sql="insert into maoyan( fname,fpic,fscore ) values( %s,%s,%s )"
#proxies= #使用**包裝一下自己
#瀏覽器頭,同樣的包裝一下自己
headers=
files= #用來儲存爬到的電影
timetotal=0 #總耗時
#print(headers)
for type in range(67):
#迴圈拼接位址
r=requests.get(''.format(type=type*30),proxies=proxies,headers=headers,verify=false)
#定義乙個正規表示式獲取需要的資料
filemsgpattern=re.compile( 'movie-poster.*?.*?"(.*?)".*?movie-item.*?/films/.*?>(.*?).*?orange">(.*?)
',re.s )
filemsg=re.findall(filemsgpattern,r.text)
print( "第 ",type,"頁...,該頁有電影:",len(filemsg) )
#得到的filemsg中對應的資料分別為:,名字以及評分
for msg in filemsg:
fpic=msg[0]
fname=msg[1]
#這裡判斷是否有評分
#由於電影中有些評分項是寫的無評分的,如果其長度為4則說明該電影是無評分
if len(msg[2])!=4: #如果電影無評分,繼續爬取得到該電影的評分
a=re.compile('>(.*?).*?>(.*?)
s=re.findall(a,msg[2])
for x,y in s:
fscore=x+y #x為小數點左邊的數,y為小數點右邊的數
else:
fscore=msg[2]
file=[fname,fpic,fscore]
print(file)
#這裡是每爬取到一百個電影做一次批量插入資料庫,特點:快!減少資料庫壓力
if( len(files)%100==0 and len(files)!=0 ):
print('已爬電影:***************=',len(files))
try:
cursor.executemany(sql,files[-100:]) #批量插入:每爬取一百個電影資訊再存入資料庫
time.sleep(random.randint(1,2))
db.commit()
files.clear() #資料加入資料庫之後清空files
except:
db.rollback()
#如持續爬取乙個網頁大量數量會被封ip的呢
times=random.randint(5, 10) #程式掛起一段時間,克制一下反爬蟲機制
timetotal+=times
print("第",type,"頁結束,請等待:",times,"秒...")
time.sleep(times)
print("爬取完成,共費時:",timetotal)
print( len(files) )
if len(files):
cursor.executemany(sql,files[:len(files)]) #怕最後沒有一百個電影時沒執行插入
time.sleep(random.randint(1,2))
db.commit()
cursor.close()
db.close()
下面是開始爬取到爬取完的截圖
如果執行上面**報錯,可能是那個**ip用不了了,在西刺**或者快**上重新找乙個可用的就行了。我部落格裡面有一篇是關於爬取快**的文章
謝謝您的閱讀!
爬取貓眼電影
有乙份工作需要我列出兩個電影院的每天電影排期資訊,我不想每次都要去貓眼上覆制貼上。所以做了個爬蟲 功能 能夠知道每天的電影排期資訊 使用限制 只能在當天使用,不能在前一晚上使用,後面我會再考慮修改 coding utf 8 import requests import re from bs4 imp...
python爬取貓眼電影排行
完整的 如下在這裡 閒著沒事,把解析html中的正則方法改用了xpath與beautifulsoup,只能說各有各的優點吧。正則的話,提取資訊可以連貫,一次性提取出所有需要的資訊,當然前提是你的正則式子沒有寫錯,所以說正則寫起來相比xpath與beautifulsoup來說要複雜一下,提取出錯後,除...
貓眼電影影評爬取
電影的影評介面如下 這個可以在網上搜到,也可以自己抓包分析 這裡簡單的分析一下引數的含義 1218029 貓眼電影的id 這裡就是 少年的你 的電影id了 offset 偏移,貌似是依次增加15 我們可以每次增加offset來進行爬取,即讓offset每次增加15。我們通過這種方式來構造url,傳送...