php 爬虫_公众号简单爬虫--把公众号文章全部转载到网站(三)

news/2024/5/8 16:25:54/文章来源:https://blog.csdn.net/weixin_39883462/article/details/110934467

2a9f38703f20cbf9424e22495baffee1.png

公众号简单爬虫--把公众号文章全部转载到网站(三)

根据上一篇的方法,我们得到了一个包含标题,时间,作者,封面,文章连接等信息的json文件.接下来,就是要提取文章详细信息和把一系列的信息写入数据库.

这里先说明几点,我们转贴公众号文章,会有个问题,就是图片会不显示.由于网站源码是php的,所以我们要自己写一个 img.php文件放在网站根目录下,作用是让转贴的图片能显示出来.

代码如下:

<?php
header("Content-Type:image/gif");
$p=$_GET['p'];
$pics=file($p);
for($i=0;$i< count($pics);$i++)
{
echo $pics[$i];
}
?>

1e9885a37fb1fcd7721c1e8b9873cfa5.png

那么所有的图片都要修改,详细见下面代码.

再有就是封面图,网站没用提供外链功能,那么我们可以自己处理一下,把上面的img.php文件复制一份,拷贝到upload文件夹,在数据库里填上 /img.php?p={图片连接},这样就可以连封面都直接用外链图片了.

f65ff86a47be1334bb35496ccfaefa8e.png

最后放效果视频,九百多篇文章大概用了9分来钟(可以从40秒直接挑到8分42秒).有9篇文章错误是在采集历史数据的时候就出问题,不管它们了.

还有些写入数据库的时候会返回提示信息编码错误之类的,不用管它们,没用问题的.

6861f4037e8bb8dc2ac07307b6f12437.png
爬虫程序运行效果https://www.zhihu.com/video/1102614539148791808

最后上完整代码:

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 19 10:33:40 2019
获取每篇文章内容,并修改图片显示 ,写入数据库
@author: 浩海泛舟
"""
import 历史消息爬虫 as 包_历史消息爬虫
import codecs as 包_编码
import json
import re as 包_正则
import pymysqldef 方法_读取json文件(路径):文件列表 = []with 包_编码.open(路径, 'r', 'utf-8-sig') as 文件1:        文件 = 文件1.readlines()  # 读出来的是一个list新_文件 = json.loads(文件[0], encoding='utf-8')for i in 新_文件:文件列表.append(i)return 文件列表def 方法_替换图片(内容):图片提取_规则 = 包_正则.compile('<img class(.*?)/>')图片路径_规则 = 包_正则.compile('src="(.*?)"')图片列表 = 包_正则.findall(图片提取_规则,内容)替换列表 = []for 图片 in 图片列表:图片路径 = 包_正则.findall(图片路径_规则,图片)图片路径 = 图片路径[0]图片修改 = '&lt;p&gt;&lt;img src=&quot;../img.php?p=' + 图片路径 + '&quot;&gt;&lt;/p&gt;'原图片 = '<img class' + 图片 + '/>'替换 = [原图片,图片修改]替换列表.append(替换)return 替换列表#print(文章列表)
def 方法_获取并修改正文内容(网址):网页 = 包_历史消息爬虫.方法_获取网页(网址)内容抽取_规则 = 包_正则.compile('<div class="rich_media_content " id="js_content">(.*?)</div>',包_正则.DOTALL)内容抽取 = 包_正则.findall(内容抽取_规则,网页)内容抽取 = 内容抽取[0].replace(r'n','')图片替换列表 = 方法_替换图片(内容抽取) for 图片替换 in 图片替换列表:内容抽取 = 内容抽取.replace(图片替换[0],图片替换[1])return 内容抽取def 方法_插入数据(sql语句):# 打开数据库连接数据库 = pymysql.connect("数据库网址", "用户名", "密码", "数据库")# 使用cursor()方法获取操作游标 指针操作 = 数据库.cursor()# SQL 插入语句try:# 执行sql语句指针操作.execute(sql语句)# 提交到数据库执行数据库.commit()except:# Rollback in case there is any error数据库.rollback()# 关闭数据库连接数据库.close()def 方法_总方法(路径):文章列表 = 方法_读取json文件(路径)#倒序,时间久的先处理文章列表.reverse()a = 0写入错误列表 = []for 文章 in 文章列表:时间 = 文章[1]标题 = 文章[2]作者 = 文章[3]描述 = 文章[4]封面 = '/img.php?p=' + 文章[6]连接 = 文章[5]try:正文内容 = 方法_获取并修改正文内容(连接)except:写入错误列表.append(文章)continue# SQL 插入语句sql = """INSERT INTO tpt_article(tid,open,commend,choice,title,author,time,pic,description,content) VALUES (1,1,1,1, '%s', '%s', %s, '%s', '%s', '%s')""" %(标题,作者,时间,封面,描述,正文内容)方法_插入数据(sql)          a+=1print('已完成',a ,'个数据插入')#if a ==5:#    break 包_历史消息爬虫.方法_保存json文件('写入数据库错误列表信息.json',写入错误列表)      returnif __name__ == '__main__' :路径 = '魂斗罗公众号信息.json'#文章列表 = 方法_读取json文件(路径)#文章列表.reverse()#print(文章列表[907])方法_总方法(路径)

感谢各位的阅读,望勿喷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_818846.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP毕业设计旅游网站,基于PHP旅游网站的开发与设计(含录像)

基于PHP旅游网站的开发与设计(含录像)(程序代码,数据库,毕业论文25000字)随着Internet的普及&#xff0c;越来越多的企业建立了自己的WWW网站&#xff0c;电子商务应时而生。本论文主要讨论如何建立一个简单的旅游电子商务网站。本网站主要包括4大系统&#xff1a;注册模块&…

vue倒计时时间实现圆形进度条_Vue实现列表倒计时效果_vue.js教程,AngularJS教程_我爱模板网 - 提供下载各种免费建站资源,免费网站模板,免费网页特效,让你爱上建站!...

我爱模板网要实现下面的效果&#xff1a;即从后台获取数据&#xff0c;然后根据返回的时间&#xff0c;如“2019-12-17 23:59:59”&#xff0c;做成倒计时效果。第一步、布局&#xff1a;{{item.storeName}}{{item.storeDistance}}{{item.storeIndustryName}}{{item.countDownH…

利用Minify加速 优化网站性能教程

Minify 是用PHP5开发的应用&#xff0c;通过遵循一些Yahoo的优化规则来提高网站的性能。它会合并多个CSS或者JavaScript文件&#xff0c;移除一些不必要的空格和注释&#xff0c;进行gzip压缩&#xff0c;并且会设置浏览器的缓存头。Minify 在设计上和Yahoo的 Combo Handler Se…

保护水资源公益网站html,保护水资源公益海报世界水日宣传海报

保护水资源公益海报世界水日宣传海报是一篇世界水日地球日环境保护矢量公益海报模板&#xff0c;内容制作比较精美&#xff0c;水是生命之源公益海报,水是我们的生命之源,保护水资源是我们每个人的共同责任,不浪费任何一滴水&#xff0c;需要这样的一篇节水主题宣传海报素材的朋…

登录网站后自动退出需重新登录_微博自动关注陌生人?你的账号有可能被“劫持”了!...

近期&#xff0c;北京市举报中心接到网民举报称&#xff0c;他的新浪微博账号经常自动关注陌生人&#xff0c;其中大多是营销账号&#xff0c;自己并不感兴趣&#xff0c;真正想看的内容却找不到了&#xff0c;影响使用体验。北京市举报中心依法依规交由网站处置&#xff0c;在…

虚拟服务器调优不包括,使用虚拟主机会对SEO优化有影响吗?

想做一个网站除了需要有域名之外&#xff0c;还需要一个源码承载工具&#xff0c;那就是服务器或者虚拟主机&#xff0c;服务器固然是好的&#xff0c;那么使用虚拟主机会不会对聊城SEO优化有影响呢&#xff1f;一、虚拟主机是什么&#xff1f;如果要了解虚拟主机对聊城SEO优化…

java程序挑战_某网站的编程挑战题目 Java版本的 strToInt

题目详情输入一个表示整数的字符串&#xff0c;把该字符串转换成整数并输出&#xff0c;例如输入字符串"345"&#xff0c;则输出整数345。请完成函数StrToInt&#xff0c;实现字符串转换成整数的功能。友情提醒&#xff1a;提交代码之前&#xff0c;请复查下你的程序…

php网站首页打开的慢,最近解决客户网站首页打开慢的体会

最近解决客户网站首页打开慢的体会首先打开客户网站首页&#xff0c;在index.php页面执行断点测试&#xff0c;测试出一条SQL语句执行缓慢&#xff1a;然后复制这个SQL语句到数据库里执行了一下&#xff0c;发现整整用了30多秒&#xff0c;用测试命令测试出结果如下&#xff1a…

esp8266 rtos 开发环境 ubuntu_写个网站 - Ubuntu开发环境搭建

下班回家的路上想着要不写个网站&#xff0c;然后&#xff0c;要不把做网站的过程写下来吧&#xff0c;然后,回来后&#xff0c;折腾折腾&#xff0c;坐到电脑前&#xff0c;开始打字。服务器原来腾讯云上有一个Ubuntu服务器&#xff0c;现在全部重新开始。基于安全考虑&#x…

linux discuz 目录权限设置,Linux下 网站目录读写权限的设置

Linux下 网站目录读写权限的设置作者&#xff1a;admin 发布于&#xff1a;2017-4-25 9:39 Tuesday网站目录文件权限的设置对网站的安全至关重要&#xff0c;下面简单介绍网站目录文件权限的基本设定。我们假设http服务器运行的用户和用户组是www-data&#xff0c;网站用户为ww…

怎样用sourceTree将自己本地的项目上传到github网站上

前言&#xff1a;GitHub 是基于 Git 的一个代码托管网站。开发者可以将代码在 GitHub 上开源&#xff0c;可以浏览其它项目的代码。 准备工作&#xff1a;1、github网站账号。2、sourceTree软件。 一、在github网站上新建一个仓库 方法很简单&#xff0c;你可以参考官网给出的教…

宝塔linux怎么安装asp网站,宝塔面板创建网站:宝塔linux面板添加网站详细教程...

如何利利用宝塔面板来创建网站&#xff1f;其实&#xff0c;宝塔面板操作还是比较简单的&#xff0c;宝塔windows面板和Linux面板添加网站的步骤是差不多的&#xff0c;不过为了让第一次接触宝塔Linux面板的站长更容易理解和学习&#xff0c;所以就分享一下Linux面板创建站点添…

数据访问之注册审核(重点是审核!!!)常用于企业、公司、医院等网站---2017-05-04...

关于审核&#xff0c;如发表文章的审核、员工请假的审核、药品申请的审核等等&#xff0c;代码大同小异。下面来看一下代码是怎么写的&#xff1a; 用到的数据库:hw_0408 用到的表&#xff1a;users 首先&#xff0c;实现注册功能&#xff08;zhece.php chuli.php&#xff…

访问Oracle em https https://localhost:1158/em 报访问网页提示此网站的安全证书有问题解决方法

访问Oracle em https https://localhost:1158/em 报访问网页提示此网站的安全证书有问题 因为ie10、ie11等对不安全的链接&#xff0c;管理更加严格&#xff0c;低安全级别&#xff0c;不能解决问题&#xff0c; 解决办法&#xff1a; 1、采用google 浏览器&#xff0c;Chrom…

思科模拟器企业网站服务器配置,cisco模拟器配置域名web服务器

cisco模拟器配置域名web服务器 内容精选换一换防护域名开启WEB基础防护之后&#xff0c;访问网站如果出现500&#xff0c;502&#xff0c;504等报错&#xff0c;并且显示Web应用防火墙和网站连接失败&#xff0c;如图1所示。可能的原因比较多&#xff0c;如防火墙拦截、源站配置…

建站手册-语义网:语义网实例

ylbtech-建站手册-语义网&#xff1a;语义网实例1.返回顶部 1、http://www.w3school.com.cn/semweb/semantic_example.asp2、2.返回顶部1、语义网。一个简单的应用实例。 购买和出售二手车 假设某个语义网系统用于通过因特网管理二手车的销售和购买。 该系统可能包括两个主要的…

后台填充_如何才能填充发布好一个网站?

我们知道 网站做完之后 需要进行内容的填充&#xff0c;丰富的、高质量的网站内容会提高网站的搜索引擎排名&#xff0c;增加点击量&#xff0c;从而给企业带来很好品牌宣传效果和可观的经济收益。那么我们填充时应该注意哪些&#xff1f;这里来列举几点1、上传图片时要按照设计…

ercharts一个页面能放几个_网站搜索排名,为什么需要高点击率页面?

在做SEO的过程中&#xff0c;我们经常会遇到这样的情况&#xff1a; ①有关键词排名&#xff0c;网站流量非常少。 ②页面关键词排名&#xff0c;长期停滞不前。 ③整站权重很难得到有效的提升&#xff0c;即使你有大量关键词排名。 面对这样的情况&#xff0c;你可能会想尽各种…

java做一个数据库网站,用javaSwing和mysql数据库做的一个登录页面

用javaSwing和mysql数据库做的一个登录页面用javaSwing和mysql数据库做的一个登录页面一&#xff1a;首先在eclipse中新建一个java工程二&#xff1a;然后新建一个包&#xff0c;并且在包中新建两个类&#xff1a;一个事登录用的界面(Login)类&#xff0c;一个事连接数据库的(j…

win10 iis6写php接口,小编介绍win10 IIS 6.0安装和网站架设的方法图文教程

最近有些朋友反馈小编问win10 IIS 6.0安装和网站架设的方法是什么。IIS 6.0 和 Windows Server 2003在网络应用服务器的管理、可用性、可靠性、安全性、性能与可扩展性方面提供了许多新的功能。IIS 6.0同样增强了网络应用的开发与国际性支持。那么接下来小编就为大家说说 IIS 6…