python 爬网页 发布wordpress 包含图片_Python爬虫扒妹子图片并自动发布到wordpress网站...

#!/usr/bin/python

#-*- coding : utf-8 -*-

importmimetypes,jsonimportrequestsimportre,os,threading,time,pymysqlclasswordpress_post:

def__init__(self,tittle,content):

self.tittle=tittleself.content=contentdefmysql_con(self):conn=pymysql.connect(host='',port=3306,user='',passwd='',db='',charset='utf8') #在此修改数据库信息

returnconndefup(self):times=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))sql="INSERT INTO wp_posts(post_author,post_date,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_name,to_ping,pinged,post_modified,post_content_filtered,post_parent,menu_order,post_type,comment_count) VALUES ('1','%s','%s','%s','','publish','open','open','%s','','','%s','','0','0','post','0')" % (str(times),str(self.content),str(self.tittle),str(self.tittle),str(times))

returnsqldefcat(self,ids,cat):sql="INSERT INTO wp_term_relationships(object_id,term_taxonomy_id,term_order) VALUES (%s,%s,'0')"%(ids,cat)

returnsqldefclose_mysql(self,cursor,conn):conn.commit()cursor.close()conn.close()

defupload(files):

APIKey = "" #在此修改apikeyformat= "json"url= "http://yoursite/api/1/upload/?key="+ APIKey + "&format=" +format#在此修改图床地址r=requests.post(url,files=files)time.sleep(1)

returnjson.loads(r.text)

defformatSource(filename):imageList= []type=mimetypes.guess_type(filename)[0]imageList.append(('source' , (filename,open(filename, 'rb') ,type)))

returnimageListreturnimageListclassmyThread(threading.Thread):

def__init__(self,url,dir,filename):threading.Thread.__init__(self)

self.threadID=filenameself.url=urlself.dir=dirself.filename=filenamedefrun(self):download_pic(self.url,self.dir,self.filename)

defdownload_pic(url,dir,filename):headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36Name','Referer':'http://www.mm131.com/'}req=requests.get(url=url,headers=headers)

ifreq.status_code==200:

withopen('temp/'+str(filename)+'.jpg','wb') asf:f.write(req.content)

defget_page_url_info(flag):infos=[]

ifflag==1:url='http://www.mm131.com/xinggan/'

else:url='http://www.mm131.com/xinggan/list_6_'+str(flag)+'.html'

get=requests.get(url)infos=re.findall(r'

(.*)',str(getpage.content,'gb2312',errors='ignore'))pages=re.findall(r'共(.*?)页',str(getpage.content,'gb2312',errors='ignore'))

returntittle,pagesdefget_img(a,page,tittle):threads=[]download_url='http://img1.mm131.me/pic/'+str(a)+'/'

fortintittle:

print('开始上传:'+t)

forpage_imginrange(int(page)):download_img_url=download_url+str(page_img)+'.jpg'thread=myThread(download_img_url,t,page_img)thread.start()threads.append(thread)

fortsinthreads:ts.join()

defupload_img(page,tittle):

print(tittle[0])

foriinrange(int(page)):file_s='temp/'+str(i)+'.jpg'

print(file_s)b=upload(formatSource(file_s))os.remove(file_s)img_hc=''

withopen('temp/temp.txt','a+') asf:f.write(img_hc)

defpost_article(info,tittle):

withopen('temp/log.txt','a+') asf:f.write(str(info)+'n')

withopen('temp/temp.txt','r') asf:wz_content=f.read()os.remove('temp/temp.txt')a=wordpress_post(str(tittle[0]),wz_content)conn=a.mysql_con()cursor=conn.cursor()c=a.up()effect_row=cursor.execute(c)new_id=cursor.lastrowid

d=a.cat(new_id,'1')effect_row=cursor.execute(d)a.close_mysql(cursor,conn)

defmain():flag=1

while True:

try:info_s=get_page_url_info(flag)

except:

print('获取初始信息错误')

continue

forinfoininfo_s:img_info=[]img_tittle=[]img_page=[]

withopen('temp/log.txt','r') asf:b=f.read()

ifinfonot inb:

try:img_info=get_page_img_info(info)

except:

print('获取图片信息出错')

continueimg_tittle=img_info[0]img_page=img_info[1]

try:

print('下载图片完成')get_img(info,img_page[0],img_tittle)

except:

print('下载图片出错')

continue

try:upload_img(img_page[0],img_tittle)

except:

print('图床错误')

continuepost_article(info,img_tittle)

else:continueflag+=1

print('下一页')

if__name__=='__main__':

try:

ifos.path.exists('temp')==False:os.makedirs('temp')f=open('temp/log.txt','w+')f.close()main()

else:main()

excepte:

print(e)

print('主程序出错,请重新运行')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值