php可以抓取网页数据吗(是想要搜索引擎抓取是吧?搜索引擎一般只会抓取title和meta)

优采云 发布时间: 2022-01-03 16:01

  php可以抓取网页数据吗(是想要搜索引擎抓取是吧?搜索引擎一般只会抓取title和meta)

  我想被搜索引擎抓取,对吗?

  搜索引擎一般只抓取标题和元内容、h1、描述等内容

  不会运行js。

  只会抓取您图片 1 中的内容(不会加载其中的任何其他链接)。

  一般需要实现这些,可以使用vue服务端渲染。

  如果您对现有项目进行更改。这个工作量的变化会比较大。

  一般来说,如果你想改变一个现有的项目,它可以被搜索引擎抓取。还有一种方法。

  既然搜索引擎抓取只会抓取标题,那么我会在后台渲染这些,其他的就保持原样。

  如何实现?

  您需要在前端更改一些内容:

  1、路由不能使用#的模式(因为链接#好,服务器获取不到)

  2、需要被搜索引擎抓取的列表必须修改为后端渲染,比如产品列表页面,跳转方法必须有指定的标签链接,搜索引擎可以爬下来

  (可以很简单,比如:可以加一个下一页,一个标签,放在id="app"里面(这是后端的内容),前端可以改最多在加载vue之前隐藏)

  3、 以商品详情为例,(good-info:表示商品详情,12345:表示商品详情编号)后台根据这些数据渲染模板。你也可以用吗? /good-info?id=12345 的形式。

  后端所需的更改:

  1、因为路由方式改变了,后端需要支持前端路由。 (例如:访问/web/????不管后面是什么,只要没有匹配到的静态资源,就会返回到后端渲染模板。这个需要一个小改动,就是改变index.html文件给一个名字,因为如果/web/这样的话,默认是index.html,静态资源匹配。),如果前端没有路由,这个方法会返回这个模板,并且前端需要指定404页面什么的,也可以使用其他方法,比如:根据前端路由匹配模板,给别人返回404。

  2、获取对应数据的链接较多,如:/good-info/12345,需要获取商品详情编号:12345的数据,渲染模板,返回。

  后端代码

  <br />

<br />

const express = require('express');<br />

const router = express.Router();<br />

const path = require('path')<br />

<br />

// 开放静态文件<br />

router.use(express.static(path.join(__dirname, 'view'),{<br />

  maxage: '2h' // 缓存<br />

}));<br />

<br />

// 商品详情 -- 可以添加更多其他的<br />

router.use('/good-info/:id', (req, res, next)  => {<br />

// 根据链接参数,从数据库请求数据<br />

const obj = {<br />

22222: {title: '22222title', h1: '标题22222'},<br />

12345: {title: '12345title', h1: '标题12345'},<br />

}<br />

const id = req.params.id<br />

req.data = obj[id]<br />

next()<br />

})<br />

<br />

router.use('/', async (req, res, next)  => {<br />

// 渲染好,返回<br />

res.render(path.join(__dirname, 'view/dome'), req.data); // req.data: {title: '我是后端渲染title', h1: '我是标题h1'}<br />

})<br />

<br />

module.exports = router;<br />

  模板代码

  <br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

  还有很多其他的方法。例如,前端和后端不需要更改。原理就像一个代理。服务器用于先渲染页面,然后返回页面。

  我没有专门找过,有需要的可以自己找。

  希望这些能帮到你。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线