爬虫 数据一键导入wordpress

当爬虫获取到大量数据需要在wordpress上展示,如何简单将 数据一键导入wordpress 中呢?

WP All Import 是神奇的 – 它适用于任何XML或CSV文件,导入图像,并且可以轻松地将数据导入到插件和主题字段或您需要的任何其他地方。

wp all import只有部分功能免费可是已经足够了

按步骤从数据导出csv文件

免费使用部分

免费导入的有标题,内容,分类,时间,关键词等,图片收费我们用其他方法设置特色图像。

设置特色图像

WP All Import使用方式百度一下

导入后没有特色图像,获取内容页面第一张图为特色图像

在function.php中添加方法

//获取第一张图片
function catch_that_image() {
  global $post, $posts;
  $first_img = '';
  ob_start();
  ob_end_clean();
  $output = preg_match_all('/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\?|\'|\"].*?[\/]?>/', $post->post_content, $matches);
  $first_img = $matches [1] [0];
  if(empty($first_img)){ //Defines a default image
    $first_img = "http://yourwebsite/default.jpg";
  }
  return $first_img;
}

在特色图像处添加一般在wp-content/themes/使用主题/content.php中使用

<?php echo catch_that_image() ?>

特色图像添加成功

WordPress批量修改文章发布状态,计划发布修改已发布

计划发布一键发布

UPDATE `wp_posts` SET `post_status` ='publish' WHERE (`post_status`='future');

已发布一键待审核

UPDATE `wp_posts` SET `post_status` ='publish' WHERE (`post_status`='pending');

待审核一键已发布

UPDATE `wp_posts` SET `post_status` ='pending' WHERE (`post_status`='publish');

批量打开文章的评论功能代码

评论开

UPDATE wp_posts SET comment_status='open'

评论关

UPDATE wp_posts SET comment_status='close'

WordPress批量修改发布时间(随机时间)

采集了一批文章,都是同一个时间,想随机一下看着真实一点.

原理是修改为当前时间随机减去一定的秒数,rand旁边就是秒数
36002430*3代表3个月,这批文章的时间就会改成3个月内随机分布

update wp_posts set 
post_date=DATE_ADD( now(), INTERVAL -FLOOR(1 + (RAND() * 3600*24*30*3)) SECOND ) ,
post_date_gmt=post_date,
post_modified=post_date,
post_modified_gmt=post_date

需要注意的是,我这里没有加where条件,如果你随机一部分文章,需要加where条件。

大数据优化

删除所有日志修订

影响wordpress运行速度的根源在于日志的修订记录,一百多篇文章会有一千多条的日志修订的记录,所以此步优化必须做,提速效果非常明显,执行以下SQL语句

DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'

删除修订版本所对应的相关联数据和自动草稿中的冗余数据。

DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_status='auto-draft' or a.post_type = 'revision';

优化 wp_posts 表

写文章的时候进行的插入、更新或删除等都会产生不同大小的记录碎片,整理碎片这步要做。



OPTIMIZE TABLE wp_commentmeta;

OPTIMIZE TABLE wp_comments;

OPTIMIZE TABLE wp_links;

OPTIMIZE TABLE wp_options;

OPTIMIZE TABLE wp_postmeta;

OPTIMIZE TABLE wp_posts;

OPTIMIZE TABLE wp_terms;

OPTIMIZE TABLE wp_term_relationships;

OPTIMIZE TABLE wp_term_taxonomy;

OPTIMIZE TABLE wp_usermeta;

OPTIMIZE TABLE wp_users;

删除所有垃圾留言

这个可以在后台一条一条的删除,也可以到MySQL执行下也行:

DELETE FROM wp_comments WHERE comment_approved != '1';

删除没有的标签

有些文章删除了,但标签还在,WordPress不会自动删除的,我们手动清理下吧:

DELETE a,b,c
FROM
wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
c.taxonomy = 'post_tag' AND
c.count = 0
);

删除没用的 postmeta 记录

当文章的记录删除后,还有日志扩展表postmeta的数据还没有删除,也人工清理下吧:

DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL

删除pingback通告

worddpress的pingback通告时间久了也会在数据库中产生很多垃圾。我们可以执行这条SQL语句清理这些东西:

DELETE FROM wp_comments WHERE comment_type = 'pingback';

总而言之网站的速度就是网站的”半条生命”不要让自己的网站太过臃肿,以免影响网友访问。

衍生品:藏羚资源网

0 评论
内联反馈
查看所有评论