0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python爬虫框架Scrapy实战案例!

马哥Linux运维 来源:lq 2018-12-07 16:12 次阅读

我们使用dmoz.org这个网站来作为小抓抓一展身手的对象。

首先先要回答一个问题。

问:把网站装进爬虫里,总共分几步?

答案很简单,四步:

新建项目 (Project):新建一个新的爬虫项目

明确目标(Items):明确你想要抓取的目标

制作爬虫(Spider):制作爬虫开始爬取网页

存储内容(Pipeline):设计管道存储爬取内容

好的,基本流程既然确定了,那接下来就一步一步的完成就可以了。

1.新建项目(Project)

在空目录下按住Shift键右击,选择“在此处打开命令窗口”,输入一下命令:

其中,tutorial为项目名称。

可以看到将会创建一个tutorial文件夹,目录结构如下:

下面来简单介绍一下各个文件的作用:

scrapy.cfg:项目的配置文件

tutorial/:项目的Python模块,将会从这里引用代码

tutorial/items.py:项目的items文件

tutorial/pipelines.py:项目的pipelines文件

tutorial/settings.py:项目的设置文件

tutorial/spiders/:存储爬虫的目录

2.明确目标(Item)

在Scrapy中,items是用来加载抓取内容的容器,有点像Python中的Dic,也就是字典,但是提供了一些额外的保护减少错误。

一般来说,item可以用scrapy.item.Item类来创建,并且用scrapy.item.Field对象来定义属性(可以理解成类似于ORM的映射关系)。

接下来,我们开始来构建item模型(model)。

首先,我们想要的内容有:

名称(name)

链接(url)

描述(description)

修改tutorial目录下的items.py文件,在原本的class后面添加我们自己的class。

因为要抓dmoz.org网站的内容,所以我们可以将其命名为DmozItem:

刚开始看起来可能会有些看不懂,但是定义这些item能让你用其他组件的时候知道你的 items到底是什么。

可以把Item简单的理解成封装好的类对象。

3.制作爬虫(Spider)

制作爬虫,总体分两步:先爬再取。

也就是说,首先你要获取整个网页的所有内容,然后再取出其中对你有用的部分。

3.1爬

Spider是用户自己编写的类,用来从一个域(或域组)中抓取信息

他们定义了用于下载的URL列表、跟踪链接的方案、解析网页内容的方式,以此来提取items。

要建立一个Spider,你必须用scrapy.spider.BaseSpider创建一个子类,并确定三个强制的属性:

name:爬虫的识别名称,必须是唯一的,在不同的爬虫中你必须定义不同的名字。

start_urls:爬取的URL列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。

parse():解析的方法,调用的时候传入从每一个URL传回的Response对象作为唯一参数,负责解析并匹配抓取的数据(解析为item),跟踪更多的URL。

这里可以参考宽度爬虫教程中提及的思想来帮助理解,教程传送:[Java] 知乎下巴第5集:使用HttpClient工具包和宽度爬虫。

也就是把Url存储下来并依此为起点逐步扩散开去,抓取所有符合条件的网页Url存储起来继续爬取。

下面我们来写第一只爬虫,命名为dmoz_spider.py,保存在tutorial\spiders目录下。

dmoz_spider.py代码如下:

allow_domains是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页。

从parse函数可以看出,将链接的最后两个地址取出作为文件名进行存储。

然后运行一下看看,在tutorial目录下按住shift右击,在此处打开命令窗口,输入:

运行结果如图:

报错了:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinalnot in range(128)

运行第一个Scrapy项目就报错,真是命运多舛。

应该是出了编码问题,谷歌了一下找到了解决方案:

在python的Lib\site-packages文件夹下新建一个sitecustomize.py:

再次运行,OK,问题解决了,看一下结果:

最后一句INFO: Closing spider (finished)表明爬虫已经成功运行并且自行关闭了。

包含 [dmoz]的行 ,那对应着我们的爬虫运行的结果。

可以看到start_urls中定义的每个URL都有日志行。

还记得我们的start_urls吗?

http://www.dmoz.org/Computers/Programming/Languages/Python/Bookshttp://www.dmoz.org/Computers/Programming/Languages/Python/Resources

因为这些URL是起始页面,所以他们没有引用(referrers),所以在它们的每行末尾你会看到 (referer: )。

在parse 方法的作用下,两个文件被创建:分别是 Books 和 Resources,这两个文件中有URL的页面内容。

那么在刚刚的电闪雷鸣之中到底发生了什么呢?

首先,Scrapy为爬虫的 start_urls属性中的每个URL创建了一个 scrapy.http.Request 对象 ,并将爬虫的parse 方法指定为回调函数。

然后,这些 Request被调度并执行,之后通过parse()方法返回scrapy.http.Response对象,并反馈给爬虫。

3.2取

爬取整个网页完毕,接下来的就是的取过程了。

光存储一整个网页还是不够用的。

在基础的爬虫里,这一步可以用正则表达式来抓。

在Scrapy里,使用一种叫做 XPath selectors的机制,它基于 XPath表达式。

如果你想了解更多selectors和其他机制你可以查阅相关资料

这是一些XPath表达式的例子和他们的含义

/html/head/title: 选择HTML文档元素下面的 <a href="https://m.hqchip.com/tags" target="_blank"><u>标签</u></a>。</p> <p style="text-indent: 2em;"> /html/head/title/text(): 选择前面提到的<title> 元素下面的文本内容</p> <p style="text-indent: 2em;"> //td: 选择所有 <td> 元素</p> <p style="text-indent: 2em;"> //div[@class="mine"]: 选择所有包含 class="mine" 属性的div 标签元素</p> <p style="text-indent: 2em;"> 以上只是几个使用XPath的简单例子,但是实际上XPath非常强大。</p> <p style="text-indent: 2em;"> 为了方便使用XPaths,Scrapy提供XPathSelector 类,有两种可以选择,HtmlXPathSelector(HTML数据解析)和XmlXPathSelector(XML数据解析)。</p> <p style="text-indent: 2em;"> 必须通过一个 Response 对象对他们进行实例化操作。</p> <p style="text-indent: 2em;"> 你会发现Selector对象展示了文档的节点结构。因此,第一个实例化的selector必与根节点或者是整个目录有关 。</p> <p style="text-indent: 2em;"> 在Scrapy里面,Selectors 有四种基础的方法(点击查看API文档):</p> <p style="text-indent: 2em;"> xpath():返回一系列的selectors,每一个select表示一个xpath参数表达式选择的节点</p> <p style="text-indent: 2em;"> css():返回一系列的selectors,每一个select表示一个css参数表达式选择的节点</p> <p style="text-indent: 2em;"> extr<a href="https://www.hqchip.com/app/1703" target="_blank"><u>ac</u></a>t():返回一个unicode字符串,为选中的数据</p> <p style="text-indent: 2em;"> re():返回一串一个unicode字符串,为使用正则表达式抓取出来的内容</p> <p style="text-indent: 2em;"> 3.3xpath实验</p> <p style="text-indent: 2em;"> 下面我们在Shell里面尝试一下Selector的用法。</p> <p style="text-indent: 2em;"> 实验的网址:http://www.dmoz.org/Computers/Programming/Languages/Python/Books/</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3OAMag2AAB7_dZ30Cg048.png" /></p> <p style="text-indent: 2em;"> 熟悉完了实验的小白鼠,接下来就是用Shell爬取网页了。</p> <p style="text-indent: 2em;"> 进入到项目的顶层目录,也就是第一层tutorial文件夹下,在cmd中输入:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3OAUgvEAAAvjyHSf78514.png" /></p> <p style="text-indent: 2em;"> 回车后可以看到如下的内容:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3SATik7AAHbS5Z2YkQ587.png" /></p> <p style="text-indent: 2em;"> 在Shell载入后,你将获得response回应,存储在本地变量 response中。</p> <p style="text-indent: 2em;"> 所以如果你输入response.body,你将会看到response的body部分,也就是抓取到的页面内容:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3aAFYdPAALND72cYfk023.png" /></p> <p style="text-indent: 2em;"> 或者输入response.headers 来查看它的 header部分:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3mAe8tVAALBJa2ARnE086.png" /></p> <p style="text-indent: 2em;"> 现在就像是一大堆沙子握在手里,里面藏着我们想要的金子,所以下一步,就是用筛子摇两下,把杂质出去,选出关键的内容。</p> <p style="text-indent: 2em;"> selector就是这样一个筛子。</p> <p style="text-indent: 2em;"> 在旧的版本中,Shell实例化两种selectors,一个是解析HTML的 hxs 变量,一个是解析XML 的 xxs 变量。</p> <p style="text-indent: 2em;"> 而现在的Shell为我们准备好的selector对象,sel,可以根据返回的数据类型自动选择最佳的解析方案(XML or HTML)。</p> <p style="text-indent: 2em;"> 然后我们来捣弄一下!~</p> <p style="text-indent: 2em;"> 要彻底搞清楚这个问题,首先先要知道,抓到的页面到底是个什么样子。</p> <p style="text-indent: 2em;"> 比如,我们要抓取网页的标题,也就是<title>这个标签:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3mAYZubAAAMzxt2yJ4194.png" /></p> <p style="text-indent: 2em;"> 可以输入:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3mAdRyfAAAHpvVtoOo344.png" /></p> <p style="text-indent: 2em;"> 结果就是:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3qAQejMAAAvPB0_p9g042.png" /></p> <p style="text-indent: 2em;"> 这样就能把这个标签取出来了,用extract()和text()还可以进一步做处理。</p> <p style="text-indent: 2em;"> 备注:简单的罗列一下有用的xpath路径表达式:</p> <p style="text-indent: 2em;"> 表达式</p> <p style="text-indent: 2em;"> 描述</p> <p style="text-indent: 2em;"> nodename 选取此节点的所有子节点。 </p> <p style="text-indent: 2em;"> / 从根节点选取。 </p> <p style="text-indent: 2em;"> // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 </p> <p style="text-indent: 2em;"> . 选取当前节点。 </p> <p style="text-indent: 2em;"> .. 选取当前节点的父节点。 </p> <p style="text-indent: 2em;"> @ 选取属性。 </p> <p style="text-indent: 2em;"> 全部的实验结果如下,In[i]表示第i次实验的输入,Out[i]表示第i次结果的输出:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3qAVtJSAABq5y-5nTo180.png" /></p> <p style="text-indent: 2em;"> 当然title这个标签对我们来说没有太多的价值,下面我们就来真正抓取一些有意义的东西。</p> <p style="text-indent: 2em;"> 使用火狐的审查元素我们可以清楚地看到,我们需要的东西如下:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3uAdCiqAABSVCIAudw253.png" /></p> <p style="text-indent: 2em;"> 我们可以用如下代码来抓取这个<li>标签:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3uAEGbvAAAGwo7Xx3w887.png" /></p> <p style="text-indent: 2em;"> 从<li>标签中,可以这样获取网站的描述:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3yAVaxqAAALDd45q6Y420.png" /></p> <p style="text-indent: 2em;"> 可以这样获取网站的标题:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3yALz5oAAALFMU58tc217.png" /></p> <p style="text-indent: 2em;"> 可以这样获取网站的超链接:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3yAb7ArAAALbImHF8A623.png" /></p> <p style="text-indent: 2em;"> 当然,前面的这些例子是直接获取属性的方法。</p> <p style="text-indent: 2em;"> 我们注意到xpath返回了一个对象列表,</p> <p style="text-indent: 2em;"> 那么我们也可以直接调用这个列表中对象的属性挖掘更深的节点</p> <p style="text-indent: 2em;"> (参考:Nesting selectorsandWorking with relative XPathsin theSelectors):</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3yAKXYOAAAFlcs_O2Q945.png" /></p> <p style="text-indent: 2em;"> 3.4xpath实战</p> <p style="text-indent: 2em;"> 我们用shell做了这么久的实战,最后我们可以把前面学习到的内容应用到dmoz_spider这个爬虫中。</p> <p style="text-indent: 2em;"> 在原爬虫的parse函数中做如下修改:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK32APDm_AABf9RQ21Ug644.png" /></p> <p style="text-indent: 2em;"> 注意,我们从scrapy.selector中导入了Selector类,并且实例化了一个新的Selector对象。这样我们就可以像Shell中一样操作xpath了。</p> <p style="text-indent: 2em;"> 我们来试着输入一下命令运行爬虫(在tutorial根目录里面):</p> <p style="text-indent: 2em;"> scrapy crawl dmoz</p> <p style="text-indent: 2em;"> 运行结果如下:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK36Acd2dAAFYpLNs00Y419.png" /></p> <p style="text-indent: 2em;"> 果然,成功的抓到了所有的标题。但是好像不太对啊,怎么Top,Python这种导航栏也抓取出来了呢?</p> <p style="text-indent: 2em;"> 我们只需要红圈中的内容:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK36AOjgYAACr0aW5qJA726.png" /></p> <p style="text-indent: 2em;"> 看来是我们的xpath语句有点问题,没有仅仅把我们需要的项目名称抓取出来,也抓了一些无辜的但是xpath语法相同的元素。</p> <p style="text-indent: 2em;"> 审查元素我们发现我们需要的<ul>具有class='directory-url'的属性,</p> <p style="text-indent: 2em;"> 那么只要把xpath语句改成sel.xpath('//ul[@class="directory-url"]/li')即可</p> <p style="text-indent: 2em;"> 将xpath语句做如下调整:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK3-ACJoMAABs7DrGtok960.png" /></p> <p style="text-indent: 2em;"> 成功抓出了所有的标题,绝对没有滥杀无辜:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK4CAHGdkAAGerLsr9Lo332.png" /></p> <p style="text-indent: 2em;"> 3.5使用Item</p> <p style="text-indent: 2em;"> 接下来我们来看一看如何使用Item。</p> <p style="text-indent: 2em;"> 前面我们说过,Item 对象是自定义的python字典,可以使用标准字典语法获取某个属性的值:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK4GASXyKAAAbv4i09k4540.png" /></p> <p style="text-indent: 2em;"> 作为一只爬虫,Spiders希望能将其抓取的数据存放到Item对象中。为了返回我们抓取数据,spider的最终代码应当是这样:</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK4GASocHAACB7Ri1uLE782.png" /></p> <p style="text-indent: 2em;"> 4.存储内容(Pipeline)</p> <p style="text-indent: 2em;"> 保存信息的最简单的方法是通过Feed exports,主要有四种:JSON,JSON lines,CSV,XML。</p> <p style="text-indent: 2em;"> 我们将结果用最常用的JSON导出,命令如下:</p> <p style="text-indent: 2em;"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK4GAHhJ1AAAJ_lLGWaQ037.png" /></p> <p style="text-indent: 2em;"> -o 后面是导出文件名,-t 后面是导出类型。</p> <p style="text-indent: 2em;"> 然后来看一下导出的结果,用文本编辑器打开json文件即可(为了方便显示,在item中删去了除了title之外的属性):</p> <p align="center"> <img src="http://file.elecfans.com/web1/M00/7D/BB/pIYBAFwKK4KACVqfAAIE9eyo2bQ297.png" /></p> <p style="text-indent: 2em;"> 因为这个只是一个小型的例子,所以这样简单的处理就可以了。</p> <p style="text-indent: 2em;"> 如果你想用抓取的items做更复杂的事情,你可以写一个 Item Pipeline(条目管道)。</p> </div> <div class="statement2"> 声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 <a class="complaint handleJumpBy" href="/about/tousu.html" target="_blank">举报投诉</a> </div> <ul class="hot-main clearfix" style="text-align: right; "> <li data-href="https://www.elecfans.com/tags/python/"> <span>python</span> <div class="hot-des"> <div class="detail"> <div class="top clearfix"> <div class="lf title"> <a href="https://www.elecfans.com/tags/python" target="_blank">python</a> </div> <div class="lf attend advertTagId" data-id="42127">+关注</div> </div> <div id="tag_desc_button42127"></div> <div class="clearfix des-detail"> <div class="lf"> <p>关注</p> <span>55</span> </div> <div class="lf"> <p>文章</p> <span>4766</span> </div> <div class="lf"> <p>浏览量</p> <span>84361</span> </div> </div> </div> </div> </li><li data-href="https://www.elecfans.com/tags/爬虫/"> <span>爬虫</span> <div class="hot-des"> <div class="detail"> <div class="top clearfix"> <div class="lf title"> <a href="https://www.elecfans.com/tags/爬虫" target="_blank">爬虫</a> </div> <div class="lf attend advertTagId" data-id="187495">+关注</div> </div> <div id="tag_desc_button187495"></div> <div class="clearfix des-detail"> <div class="lf"> <p>关注</p> <span>0</span> </div> <div class="lf"> <p>文章</p> <span>82</span> </div> <div class="lf"> <p>浏览量</p> <span>6810</span> </div> </div> </div> </div> </li> </ul> <!-- 广告中台 --> <div class="articleContentFooterAD" style="display: none; margin: 20px 0 0 0;"></div> <div class="wx_detail"> <p>原文标题:爬虫框架Scrapy的第一个爬虫示例入门教程</p> <p>文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。</p> </div> </div> <div class="art-share-layout mt18" id="shareAddPcb"> <div class="clearfix"> <a href="javascript:;" class="art-collect J_bottom-coll J_coll-btn" style="visibility:visible">收藏</a> <span class="ml15 fb"><span class="J_stownum"></span>人收藏</span> <div class="bdsharebuttonbox fr"> <div class="share-web-qrcode--detail fl"> <i class="share-web-qrcode--share-icon"></i> <div class="share-web-qrcode--bubble"> <div class="share-web-qrcode--bubble-inner"> <p class="qrcode-copy-title">扫一扫,分享给好友</p> <div class="qrcode-image"></div> <div class="qrcode-copy-link"><span>复制链接分享</span></div> </div> </div> </div> </div> </div> <a class="art-like-up J_bottom-like J_like-btn" href="javascript:;"></a> <ul class="art-like-u"></ul> </div> <!-- comment Begin --> <div class="comment-list detaildzs_list" id="comment"> <h2 class="title2">评论</h2> </div><!-- comment End --> <div class="c-form" id="cForm"> <!-- 未登录 --> <p class="c-login special-login">发布评论请先 <a href="javascript:;">登录</a></p> </div> <div class="article-list"> <p>相关推荐</p> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1583155_1_1.html" target="_blank" > <b class='flag-5'>Python</b>数据<b class='flag-5'>爬虫</b>学习内容</a> </h2> <div class="summary">流程来实现的。这个过程其实就是模拟了一个人工浏览网页的过程。<b class='flag-5'>Python</b>中<b class='flag-5'>爬虫</b>相关的包很多:urllib、requests、bs4、<b class='flag-5'>scrapy</b>、pyspider 等,我们可以按照requests</div> <div class="info"> <span class="fby">发表于</span> 05-09 17:25 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1583549_1_1.html" target="_blank" > <b class='flag-5'>Python</b><b class='flag-5'>爬虫</b>与Web开发库盘点</a> </h2> <div class="summary">的接口,一般我们都是和正则结合使用,如果对速度有要求的话,建议用lmxp,它比bs4 速度要快很多。2.<b class='flag-5'>Scrapy</b><b class='flag-5'>爬虫</b>的世界里面有没有懒人专用的<b class='flag-5'>框架</b>,当然有啦,<b class='flag-5'>scrapy</b>就是其中比</div> <div class="info"> <span class="fby">发表于</span> 05-10 15:21 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1602253_1_1.html" target="_blank" > <b class='flag-5'>Python</b><b class='flag-5'>爬虫</b>初学者需要准备什么?</a> </h2> <div class="summary">了一个人工浏览网页的过程。<b class='flag-5'>Python</b>中<b class='flag-5'>爬虫</b>相关的包很多:urllib、requests、bs4、<b class='flag-5'>scrapy</b>、pyspider 等,我们可以按照requests 负责连接网站,返回网页,Xpath 用于</div> <div class="info"> <span class="fby">发表于</span> 06-20 17:14 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1752355_1_1.html" target="_blank" > <b class='flag-5'>爬虫</b><b class='flag-5'>框架</b><b class='flag-5'>scrapy</b>包括了以下组件</a> </h2> <div class="summary"><b class='flag-5'>爬虫</b><b class='flag-5'>框架</b><b class='flag-5'>scrapy</b></div> <div class="info"> <span class="fby">发表于</span> 04-03 15:57 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1807300_1_1.html" target="_blank" > <b class='flag-5'>python</b>学习笔记-安装<b class='flag-5'>scrapy</b></a> </h2> <div class="summary">以下是基于<b class='flag-5'>python</b>所写的一个<b class='flag-5'>爬虫</b>,因为我曾经学过一点<b class='flag-5'>python</b>,所以对所有的东西都会写的很详细,同时肯定会有错的。。如果您在看这个博客,希望你可以指出我的错误之处,并且可以提高之处,谢谢。项目</div> <div class="info"> <span class="fby">发表于</span> 07-10 07:49 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1854821_1_1.html" target="_blank" > <b class='flag-5'>Scrapy</b><b class='flag-5'>爬虫</b>架构流程图详解</a> </h2> <div class="summary"><b class='flag-5'>Scrapy</b><b class='flag-5'>爬虫</b><b class='flag-5'>框架</b></div> <div class="info"> <span class="fby">发表于</span> 09-25 14:15 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1912468_1_1.html" target="_blank" > 使用<b class='flag-5'>scrapy</b>-Redis的<b class='flag-5'>爬虫</b>项目</a> </h2> <div class="summary"><b class='flag-5'>scrapy</b>-Redis分布式<b class='flag-5'>爬虫</b></div> <div class="info"> <span class="fby">发表于</span> 03-24 10:24 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1940317_1_1.html" target="_blank" > Ubuntu 1604后台如何运行<b class='flag-5'>scrapy</b><b class='flag-5'>爬虫</b>程序</a> </h2> <div class="summary">Ubuntu 1604后台运行<b class='flag-5'>scrapy</b><b class='flag-5'>爬虫</b>程序</div> <div class="info"> <span class="fby">发表于</span> 05-25 12:32 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_1947224_1_1.html" target="_blank" > 如何通过网页开启<b class='flag-5'>scrapy</b><b class='flag-5'>爬虫</b>?</a> </h2> <div class="summary">通过网页开启<b class='flag-5'>scrapy</b><b class='flag-5'>爬虫</b>,scrapydganjo结合</div> <div class="info"> <span class="fby">发表于</span> 06-05 15:56 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_2129989_1_1.html" target="_blank" > 0基础入门<b class='flag-5'>Python</b><b class='flag-5'>爬虫</b><b class='flag-5'>实战</b>课</a> </h2> <div class="summary">学习资料良莠不齐<b class='flag-5'>爬虫</b>是一门实践性的技能,没有<b class='flag-5'>实战</b>的课程都是骗人的!所以这节<b class='flag-5'>Python</b><b class='flag-5'>爬虫</b><b class='flag-5'>实战</b>课,将帮到你!课程从0基础入门开始,受众人群广</div> <div class="info"> <span class="fby">发表于</span> 07-25 09:28 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" > <h2 class="title"> <a href="https://www.elecfans.com/soft/study/net/2017/20171207596641.html" target="_blank" > 基于<b class='flag-5'>Scrapy</b>的<b class='flag-5'>爬虫</b><b class='flag-5'>框架</b>的Web应用程序漏洞检测方法</a> </h2> <div class="summary">不断提高和完善防御的方法和手段。针对此问题,提出了一种基于<b class='flag-5'>Scrapy</b>的<b class='flag-5'>爬虫</b><b class='flag-5'>框架</b>的Web应用程序漏洞检测方法。通过<b class='flag-5'>框架</b>提供的便利条件对页面进行提取分析,根据不同的攻击方式生成特有的攻击</div> <div class="info"> <span class="fby">发表于</span> 12-07 09:48 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">2</span>次下载 </div> <a href="https://www.elecfans.com/soft/study/net/2017/20171207596641.html" class="thumb" target="_blank"> <img src="https://file.elecfans.com/web2/M00/49/75/poYBAGKhwLiAcn8PAAASbfjQZZM951.jpg" alt="基于<b class='flag-5'>Scrapy</b>的<b class='flag-5'>爬虫</b><b class='flag-5'>框架</b>的Web应用程序漏洞检测方法" /> </a> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/d/889110.html" target="_blank" > <b class='flag-5'>python</b><b class='flag-5'>爬虫</b><b class='flag-5'>框架</b>有哪些</a> </h2> <div class="summary">本视频主要详细介绍了<b class='flag-5'>python</b><b class='flag-5'>爬虫</b><b class='flag-5'>框架</b>有哪些,分别是Django、CherryPy、Web2py、TurboGears、Pylons、Grab、BeautifulSoup、Cola。</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 03-22 16:13 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">6776</span>次阅读 </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/d/1436835.html" target="_blank" > windows下如何新建<b class='flag-5'>爬虫</b>虚拟环境和进行<b class='flag-5'>Scrapy</b>安装</a> </h2> <div class="summary"><b class='flag-5'>Scrapy</b>是<b class='flag-5'>Python</b>开发的一个快速、高层次的屏幕抓取和web抓取<b class='flag-5'>框架</b>,用于抓取web站点并从页面中提取结构化的数据。<b class='flag-5'>Scrapy</b>吸引人的地方在于它是一个</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 12-25 18:03 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">571</span>次阅读 </div> </div> <div class="article" > <h2 class="title"> <a href="https://www.elecfans.com/d/2018353.html" target="_blank" > <b class='flag-5'>Scrapy</b>怎么爬取<b class='flag-5'>Python</b>文件</a> </h2> <div class="summary">我们介绍了<b class='flag-5'>Scrapy</b><b class='flag-5'>框架</b>运行基本原理,紧接着我们介绍了如何利用<b class='flag-5'>Scrapy</b>爬取文本数据</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 02-24 15:16 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">545</span>次阅读 </div> <a href="https://www.elecfans.com/d/2018353.html" class="thumb" target="_blank"> <img src="https://file.elecfans.com/web2/M00/93/A9/poYBAGP4Y_6AB05JAAFNTAiOhI4194.jpg" alt="<b class='flag-5'>Scrapy</b>怎么爬取<b class='flag-5'>Python</b>文件" /> </a> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/d/2299204.html" target="_blank" > feapder:一款功能强大的<b class='flag-5'>爬虫</b><b class='flag-5'>框架</b></a> </h2> <div class="summary">今天推荐一款更加简单、轻量级,且功能强大的<b class='flag-5'>爬虫</b><b class='flag-5'>框架</b>:feapder 项目地址: https://github.com/Boris-code/feapder 2. 介绍及安装 和 <b class='flag-5'>Scrapy</b> 类似</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 11-01 09:48 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">1005</span>次阅读 </div> </div> </div> </div><!-- .main-wrap --> </article> <aside class="aside"> <input type="hidden" name="zl_mp" value="1"> <div class="author-box"> <div class="author"> <div class="author-msg"> <a href="/d/user/2737481/" class="face" target="_blank"><img src="https://bbs.elecfans.com/uc_server/data/avatar/002/73/74/81_avatar_big.jpg"/></a> <h2 class="author-msg-name"><a href="/d/user/2737481/" target="_blank">马哥Linux运维</a></h2> <!-- 需要条件判断 --> <span class="is-coulmn-author">专栏</span> </div> <div class="count"> <span class="count-item"> <span class="column-article-count">0</span> <b>文章</b> </span> <span class="count-item"> <span class="column-view-count">0</span> <b>阅读</b> </span> <span class="count-item"> <span class="column-follow-count">0</span> <b>粉丝</b> </span> <span class="count-item"> <span class="column-praise-count">0</span> <b>点赞</b> </span> </div> <div class="author-opreat"> <a class="author-collect" id="follow">关注</a> <a href="https://www.elecfans.com/d/user/2737481/" title="***的空间" target="_blank">个人主页</a> <!-- 需要条件判断 --> </div> <!-- <span class="followNum"> <strong>50</strong>人关注 </span> --> </div> <div class="author-recom"> <ul class="author-recom-list"> <li class="author-recom-item"> <span class="author-recom-type-hot">Hot</span> <a href=https://www.elecfans.com/d/716931.html>Linux如何使用XFS?</a> </li><li class="author-recom-item"> <span class="author-recom-type-hot">Hot</span> <a href=https://www.elecfans.com/d/700023.html>keepalived及LVS概述,KeepAlived工作原理</a> </li> <li class="author-recom-item"> <span class="author-recom-type-new">New</span> <a href=https://www.elecfans.com/d/6330468.html>Linux软连接的使用</a> </li><li class="author-recom-item"> <span class="author-recom-type-new">New</span> <a href=https://www.elecfans.com/d/6330454.html>一文详解RAID技术</a> </li> </ul> </div> </div> <div id="new-adsm-berry" ></div> <div id="new-company-berry"></div> <!-- 推荐文章【主站文章显示这个】 --> <div class="aside-section"> <div class="aside-section-head"> <h3 class="aside-section-name">精选推荐</h3> <a class="aside-section-more" id="recMore" href="https://www.elecfans.com/d/">更多<i class="arrow_right"></i></a> </div> <div class="aside-section-body"> <ul class="article-rec-tabs"> <li data-index="0" class="is-active">文章</li> <li data-index="2" >资料</li> <li data-index="3" >帖子</li> </ul> <!-- 文章默认展示 start --> <ul class="article-rec-content is-active"> <li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/6334618.html" target="_blank"> <span>中国硬科技创新风向标!E维智库携手明星企业强强合作,解读硬科技未来</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://www.elecfans.com/d/user/2351591/" target="_blank">章鹰观察</a> <div class="text-date">4小时前</div> <div class="text-view">251 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/6333034.html" target="_blank"> <span>基于OPENCV的相机捕捉视频进行人脸检测--米尔NXP i.MX93开发板</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://www.elecfans.com/d/c4681555" target="_blank">米尔电子</a> <div class="text-date">14小时前</div> <div class="text-view">267 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/6332830.html" target="_blank"> <span>AI对话魔法 Prompt Engineering 探索指南</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6452013/" target="_blank">京东云</a> <div class="text-date">13小时前</div> <div class="text-view">236 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/6332829.html" target="_blank"> <span>一文理解布隆过滤器和布谷鸟过滤器</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6452013/" target="_blank">京东云</a> <div class="text-date">13小时前</div> <div class="text-view">229 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/6332654.html" target="_blank"> <span>带你揭秘:功率放大器的前世今生~</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/2572303/" target="_blank">西安安泰电子</a> <div class="text-date">15小时前</div> <div class="text-view">198 阅读</div> </div> </div> </li> </ul> <!-- 文章 end --> <!-- 方案默认展示 start --> <!-- 方案 end --> <ul class="article-rec-content"> <li class="article-rec-item"> <div class="col-left"> <div class="icon-type rar"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/32/2010/2010122798535.html" target="_blank"> <span>关于LED的100个疑难解答</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/956934/" target="_blank">strugerli</a> <div class="text-date">472</div> <div class="text-date">免费</div> <div class="text-down">0下载</div> </div> </div> </li><li class="article-rec-item"> <div class="col-left"> <div class="icon-type pdf"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/35/2011/20111129253896.html" target="_blank"> <span>调频立体声收音机_陈建国</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/956902/" target="_blank">chen5262101</a> <div class="text-date">6.58 MB</div> <div class="text-date">免费</div> <div class="text-down">0下载</div> </div> </div> </li><li class="article-rec-item"> <div class="col-left"> <div class="icon-type rar"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/Mec/2022/202204011812912.html" target="_blank"> <span>可在移动设备上本地呈现的Lottie移动库</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/2748378/" target="_blank">姚小熊27</a> <div class="text-date">2.16 MB</div> <div class="text-date">免费</div> <div class="text-down">1下载</div> </div> </div> </li><li class="article-rec-item"> <div class="col-left"> <div class="icon-type zip"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/Mec/2022/202205161833941.html" target="_blank"> <span>k9s Kubernetes集群监控和管理工具</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/2008736/" target="_blank">北冥有熊</a> <div class="text-date">6.50 MB</div> <div class="text-date">2积分</div> <div class="text-down">1下载</div> </div> </div> </li><li class="article-rec-item"> <div class="col-left"> <div class="icon-type rar"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/39/2024/202404252745936.html" target="_blank"> <span>40 W SiC高压辅助电源SECO-HVDCDC1362-40W-GEVB数据手册</span> </a> </h4> <div class="text-content"> <a class="text-name" href="" target="_blank"></a> <div class="text-date">4.00 MB</div> <div class="text-date">免费</div> <div class="text-down">2下载</div> </div> </div> </li> </ul> <!-- 资料 end --> <!-- 帖子默认展示 start --> <ul class="article-rec-content"> <li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2462637_1_1.html" target="_blank"> <span>有大佬知道这是什么电路吗?长的四不像的样子,求求了</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6525955/" target="_blank">jf_03425895</a> <div class="text-date">23小时前</div> <div class="text-view">285 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2462664_1_1.html" target="_blank"> <span>HarmonyOS Next MQTT演示</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/4024343/" target="_blank">jf_00671969</a> <div class="text-date">23小时前</div> <div class="text-view">150 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2462654_1_1.html" target="_blank"> <span>怎么修改matlab与comsol联合的代码啊</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6478504/" target="_blank">jf_62721666</a> <div class="text-date">23小时前</div> <div class="text-view">252 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2462648_1_1.html" target="_blank"> <span>【米尔-紫光PG2L100H国产FPGA开发板试用】米尔-紫光PG2L100H国产FPGA开发板开箱评测</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/2296602/" target="_blank">刘鑫源的水煮鱼</a> <div class="text-date">23小时前</div> <div class="text-view">248 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2462632_1_1.html" target="_blank"> <span>嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6255761/" target="_blank">jf_13411809</a> <div class="text-date">23小时前</div> <div class="text-view">359 阅读</div> </div> </div> </li> </ul> <!-- 帖子 end --> <!-- 视频 start --> <!-- 视频 end --> <!-- 话题 start --> <!-- 话题 end --> </div> </div> <!-- <div id="new-company-zone"></div> --> <div id="new-course-berry" ></div> <!-- 推荐专栏 --> <div class="aside-section dzs-article-column"> <div class="aside-section-head"> <h3 class="aside-section-name">推荐专栏</h3> <a class="aside-section-more" href="https://www.elecfans.com/d/column">更多<i class="arrow_right"></i></a> </div> <div class="aside-section-body"> <ul class="dzs-article-column-list"></ul> </div> </div> <div id="new-webinar-berry"></div> <div id="IndexRightBottom"></div> </aside> </section> <!-- Page #content End --> <input type="hidden" name="aid" id="webID" value="828560"> <!-- $article['store_flag'] = 15 为企业号 --> <input type="hidden" class="store_flag" value="0"> <input type="hidden" class="evip_type" value="0"> <!--企业号文章id --> <input type="hidden" class="evip_article_id" value=""> <!-- 企业号id --> <input type="hidden" class="evip_id" value=""> <!--- 企业号是否付费1-是 0-否 ---> <input type="hidden" name="isPayEvip" class="isPayEvip" value="0"> <input type="hidden" class="vip-limit-read" value="0"> <input type="hidden" id="headerType" value="data"> <input type="hidden" id="details_right_hero" value="true"> <input type="hidden" id="currentUserID" value="" /> <div class="gather-bottom"></div> <link rel="stylesheet" href="/static/footer/footer.css?20230919" /> <div class="public-footer"> <div class="public-footer__hd"> <dl> <dt>华秋(原“华强聚丰”):</dt> <dd>电子发烧友</dd> <dd>华秋开发</dd> <dd>华秋电路(原"华强PCB")</dd> <dd>华秋商城(原"华强芯城")</dd> <dd>华秋智造</dd> </dl> <dl> <dd><a target="_blank" href="https://bbs.elecfans.com/infocenter.php" rel="nofollow">My ElecFans </a></dd> <dd><a target="_blank" href="//www.elecfans.com/app/"> APP </a></li> <dd><a target="_blank" href="https://www.elecfans.com/about/sitemap.html">网站地图</a></dd> </dl> </div> <div class="public-footer__main"> <dl> <dt>设计技术</dt> <dd><a href="//www.elecfans.com/pld/" target="_blank">可编程逻辑</a></dd> <dd><a href="//www.elecfans.com/article/83/" target="_blank">电源/新能源</a></dd> <dd><a href="//www.elecfans.com/article/88/142/" target="_blank">MEMS/传感技术</a></dd> <dd><a href="//www.elecfans.com/article/85/" target="_blank">测量仪表</a></dd> <dd><a href="//www.elecfans.com/emb/" target="_blank">嵌入式技术</a></dd> <dd><a href="//www.elecfans.com/article/90/155/" target="_blank">制造/封装</a></dd> <dd><a href="//www.elecfans.com/analog/" target="_blank">模拟技术</a></dd> <dd><a href="//www.elecfans.com/tongxin/rf/" target="_blank">RF/无线</a></dd> <dd><a href="//www.elecfans.com/emb/jiekou/" target="_blank">接口/总线/驱动</a></dd> <dd><a href="//www.elecfans.com/emb/dsp/" target="_blank">处理器/DSP</a></dd> <dd><a href="//www.elecfans.com/bandaoti/eda/" target="_blank">EDA/IC设计</a></dd> <dd><a href="//www.elecfans.com/consume/cunchujishu/" target="_blank">存储技术</a></dd> <dd><a href="//www.elecfans.com/xianshi/" target="_blank">光电显示</a></dd> <dd><a href="//www.elecfans.com/emc_emi/" target="_blank">EMC/EMI设计</a></dd> <dd><a href="//www.elecfans.com/connector/" target="_blank">连接器</a></dd> </dl> <dl> <dt>行业应用</dt> <dd><a href="//www.elecfans.com/led/" target="_blank">LEDs </a></dd> <dd><a href="//www.elecfans.com/qichedianzi/" target="_blank">汽车电子</a></dd> <dd><a href="//www.elecfans.com/video/" target="_blank">音视频及家电</a></dd> <dd><a href="//www.elecfans.com/tongxin/" target="_blank">通信网络</a></dd> <dd><a href="//www.elecfans.com/yiliaodianzi/" target="_blank">医疗电子</a></dd> <dd><a href="//www.elecfans.com/rengongzhineng/" target="_blank">人工智能</a></dd> <dd><a href="//www.elecfans.com/vr/" target="_blank">虚拟现实</a></dd> <dd><a href="//www.elecfans.com/wearable/" target="_blank">可穿戴设备</a></dd> <dd><a href="//www.elecfans.com/jiqiren/" target="_blank">机器人</a></dd> <dd><a href="//www.elecfans.com/application/Security/" target="_blank">安全设备/系统</a></dd> <dd><a href="//www.elecfans.com/application/Military_avionics/" target="_blank">军用/航空电子</a></dd> <dd><a href="//www.elecfans.com/application/Communication/" target="_blank">移动通信</a></dd> <dd><a href="//www.elecfans.com/kongzhijishu/" target="_blank">工业控制</a></dd> <dd><a href="//www.elecfans.com/consume/bianxiedianzishebei/" target="_blank">便携设备</a></dd> <dd><a href="//www.elecfans.com/consume/chukongjishu/" target="_blank">触控感测</a></dd> <dd><a href="//www.elecfans.com/iot/" target="_blank">物联网</a></dd> <dd><a href="//www.elecfans.com/dianyuan/diandongche_xinnenyuan/" target="_blank">智能电网</a></dd> <dd><a href="//www.elecfans.com/blockchain/" target="_blank">区块链</a></dd> <dd><a href="//www.elecfans.com/xinkeji/" target="_blank">新科技</a></dd> </dl> <dl> <dt>特色内容</dt> <dd><a href="//www.elecfans.com/d/column/" target="_blank">专栏推荐</a></dd> <dd><a target="_blank" href="https://t.elecfans.com/">学院</a></dd> <dd><a target="_blank" href="https://bbs.elecfans.com/group_716">设计资源</a></dd> <dd><a target="_blank" href="//www.elecfans.com/technical/">设计技术</a></dd> <dd><a target="_blank" href="//www.elecfans.com/baike/">电子百科</a></dd> <dd><a target="_blank" href="//www.elecfans.com/dianzishipin/">电子视频</a></dd> <dd><a target="_blank" href="//www.elecfans.com/yuanqijian/">元器件知识</a></dd> <dd><a target="_blank" href="//www.elecfans.com/tools/">工具箱</a></dd> <dd><a target="_blank" href="//www.elecfans.com/vip/#choose">VIP会员</a></dd> <dd><a target="_blank" href="//www.elecfans.com/article/special/">最新技术文章</a></dd> </dl> <dl> <dt>社区</dt> <dd><a target="_blank" href="https://bbs.elecfans.com/group">小组</a></dd> <dd><a target="_blank" href="https://bbs.elecfans.com/">论坛</a></dd> <dd><a target="_blank" href="https://bbs.elecfans.com/ask.html">问答</a></dd> <dd><a target="_blank" href="https://bbs.elecfans.com/try.html">评测试用</a></dd> <dt><a target="_blank" href="https://q.elecfans.com/">企业服务</a></dt> <dd><a target="_blank" href="https://q.elecfans.com/p/">产品</a></dd> <dd><a target="_blank" href="https://q.elecfans.com/soft/">资料</a></dd> <dd><a target="_blank" href="https://q.elecfans.com/d/">文章</a></dd> <dd><a target="_blank" href="https://q.elecfans.com/sol/">方案</a></dd> <dd><a target="_blank" href="https://q.elecfans.com/c/">企业</a></dd> </dl> <dl> <dt>供应链服务</dt> <dd><a target="_blank" href="//www.elecfans.com/kf/">硬件开发</a></dd> <dd><a target="_blank" href="https://www.hqpcb.com/">华秋电路</a></dd> <dd><a target="_blank" href="https://www.hqchip.com/">华秋商城</a></dd> <dd><a target="_blank" href="https://smt.hqchip.com/">华秋智造</a></dd> <dd><a target="_blank" href="https://www.nextpcb.com/">nextPCB</a></dd> <dd><a target="_blank" href="https://www.hqchip.com/bom.html">BOM配单</a></dd> <dt>媒体服务</dt> <dd><a target="_blank" href="//www.elecfans.com/about/service.html">网站广告</a></dd> <dd><a target="_blank" href="https://webinar.elecfans.com/">在线研讨会</a></dd> <dd><a target="_blank" href="https://event.elecfans.com/">活动策划</a></dd> <dd><a target="_blank" href="//www.elecfans.com/news/">新闻发布</a></dd> <dd><a target="_blank" href="//www.elecfans.com/xinpian/ic/">新品发布</a></dd> <dd><a target="_blank" href="//www.elecfans.com/quiz/">小测验</a></dd> <dd><a target="_blank" href="//www.elecfans.com/contest/">设计大赛</a></dd> </dl> <dl> <dt>华秋</dt> <dd><a target="_blank" href="//www.elecfans.com/about/" rel="nofollow">关于我们</a></dd> <dd><a target="_blank" href="https://www.hqchip.com/help/factsheet.html" rel="nofollow">投资关系</a></dd> <dd><a target="_blank" href="https://www.hqchip.com/help/news/lists.html" rel="nofollow">新闻动态</a></dd> <dd><a target="_blank" href="//www.elecfans.com/about/zhaopin.html" rel="nofollow">加入我们</a></dd> <dd><a target="_blank" href="//www.elecfans.com/about/contact.html" rel="nofollow">联系我们</a></dd> <dd><a target="_blank" href="/about/tousu.html" rel="nofollow">举报投诉</a></dd> <dt>社交网络</dt> <dd><a target="_blank" href="https://weibo.com/elecfanscom" rel="nofollow">微博</a></dd> <dt>移动端</dt> <dd><a target="_blank" href="//www.elecfans.com/app/">发烧友APP</a></dd> <dd><a target="_blank" href="https://yingsheng.elecfans.com/app?eleclog">硬声APP</a></dd> <dd><a target="_blank" href="https://m.elecfans.com/">WAP</a></dd> </dl> <dl> <dt>联系我们</dt> <dd class="small_tit">广告合作</dd> <dd>王婉珠:<a href="mailto:wangwanzhu@elecfans.com">wangwanzhu@elecfans.com</a></dd> <dd class="small_tit">内容合作</dd> <dd>黄晶晶:<a href="mailto:huangjingjing@elecfans.com">huangjingjing@elecfans.com</a></dd> <dd class="small_tit">内容合作(海外)</dd> <dd>张迎辉:<a href="mailto:mikezhang@elecfans.com">mikezhang@elecfans.com</a></dd> <dd class="small_tit">供应链服务 PCB/IC/PCBA</dd> <dd>江良华:<a href="mailto:lanhu@huaqiu.com">lanhu@huaqiu.com</a></dd> <dd class="small_tit">投资合作</dd> <dd>曾海银:<a href="mailto:zenghaiyin@huaqiu.com">zenghaiyin@huaqiu.com</a></dd> <dd class="small_tit">社区合作</dd> <dd>刘勇:<a href="mailto:liuyong@huaqiu.com">liuyong@huaqiu.com</a></dd> </dl> <ul class="qr-code"> <li> <p>关注我们的微信</p> <img src="/static/main/img/elecfans_code.jpg" alt="关注我们的微信" /> </li> <li> <p>下载发烧友APP</p> <img src="/static/main/img/elec_app_code.jpg" alt="下载发烧友APP" /> </li> <li> <p>电子发烧友观察</p> <img src="/static/main/img/elec_focus_code.jpg" alt="电子发烧友观察" /> </li> </ul> </div> <div class="public-footer__ft"> <div class="public-footer__ft-inner"> <a href="https://www.huaqiu.com/" target="_blank" class="public-footer__ft-logo"> <img class="is-default" src="/static/footer/image/footer-01-default.png" alt="华秋电子" /> <img class="is-hover" src="/static/footer/image/footer-01.png" alt="华秋电子" /> </a> <div class="public-footer__ft-right"> <div class="public-footer__ft-item public-footer__ft-elecfans"> <div class="hd"> <a href="https://www.elecfans.com/" target="_blank"> <!-- <img class="is-default" src="/static/footer/image/footer-02-default.png" alt="华秋发烧友"> <img class="is-hover" src="/static/footer/image/footer-02.png" alt="华秋发烧友"> --> <div class="site_foot_img"> <img src="/static/footer/image/elecfans-logo.svg" alt="华秋发烧友"> </div> <div class="site_foot_text">电子工程师社区</div> </a> </div> </div> <div class="public-footer__ft-item public-footer__ft-hqpcb"> <div class="hd"> <a href="https://www.hqpcb.com/" target="_blank"> <div class="site_foot_img"> <img src="/static/footer/image/hqpcb-logo.svg" alt="华秋电路"> </div> <div class="site_foot_text">1-32层PCB打样·中小批量</div> </a> </div> </div> <div class="public-footer__ft-item public-footer__ft-hqchip"> <div class="hd"> <a href="https://www.hqchip.com/" target="_blank"> <div class="site_foot_img"> <img src="/static/footer/image/hqchip-logo.svg" alt="华秋商城"> </div> <div class="site_foot_text">元器件现货·全球代购·SmartBOM</div> </a> </div> </div> <div class="public-footer__ft-item public-footer__ft-smt"> <div class="hd"> <a href="https://smt.hqchip.com/" target="_blank"> <div class="site_foot_img"> <img src="/static/footer/image/smt-logo.svg" alt="华秋智造"> </div> <div class="site_foot_text">SMT贴片·PCBA加工</div> </a> </div> </div> <div class="public-footer__ft-item public-footer__ft-nextpcb"> <div class="hd"> <a href="javascript:void(0)" class="next-pck-link"> <div class="site_foot_img"> <img src="/static/footer/image/nextpcb-logo.svg" alt="NextPCB"> </div> <div class="site_foot_text">PCB Manufacturer</div> </a> </div> </div> <ul class="public-footer__ft-text"> <li><a href="https://www.huaqiu.com/about/groupoverview" target="_blank">华秋简介</a></li> <li><a href="https://www.huaqiu.com/news" target="_blank">企业动态</a></li> <li><a href="https://www.huaqiu.com/about/contactus" target="_blank">联系我们</a></li> <li><a href="https://www.huaqiu.com/about/corporateculture" target="_blank">企业文化</a></li> <li><a href="https://www.huaqiu.com/about/promotionalfilm" target="_blank">企业宣传片</a></li> <li><a href="https://www.huaqiu.com/jobs" target="_blank">加入我们</a></li> </ul> </div> </div> </div> <div class="public-footer__copyright"> <p>版权所有 © 湖南华秋数字科技有限公司 </p> <p>长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)</p> <a href="https://www.elecfans.com/">电子发烧友</a> <a href="https://www.elecfans.com/" target="_blank"><strong>(电路图)</strong></a> <a href="https://beian.mps.gov.cn/#/query/webSearch?code=43011202000918" target="_blank" rel="nofollow">湘公网安备43011202000918</a> <!-- <a href="https://www.elecfans.com/about/edi.html" target="_blank">电信与信息服务业务经营许可证:合字B2-20210191</a> --> <a href="http://szcert.ebs.org.cn/c6db625a-ba09-414a-bba4-f57240baac9c6" target="_blank" rel="nofollow"> <img src="//skin.elecfans.com/images/ebsIcon.png" alt="工商网监认证">工商网监 </a> <a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank" rel="nofollow">湘ICP备2023018690号-1</a> </div> <div><input type="hidden" value="0" name="arc_relate_vid"></div> </div> <link rel="stylesheet" href="/webapi/public/project/idt/iconfont/iconfont.css"> <script src="https://skin.elecfans.com/js/elecfans_jquery.js"></script> <script src="https://staticd.elecfans.com/js/plugins.js"></script> <script> (function () { postmessageScript() function postmessageScript() { /* * postmessage */ var con_net = "" if (window.location.href.indexOf(".net") > -1) { con_net = "net" } else { con_net = "com" } var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://passport.elecfans.' + con_net + '/public/pc/plugin/postmessage.js'; var body = document.getElementsByTagName("body").item(0); body.appendChild(script); } /* * 推荐文章无图时样式修改 * */ $(".article .thumb").each(function () { if ($(this).find('img').attr('src') == "") { $(this).find('img').remove(); $(this).parent().css('padding-left', '0px'); } }); /*百度分享*/ window._bd_share_config = { common: { bdText: '', //自定义分享内容 bdDesc: '', //自定义分享摘要 bdPic: '' }, share: [{ "bdSize": 60 }] } with(document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = '']; })(); var add_url = '/d/article/write/'; var check_allow = "/d/api/iscantalk.html"; var click_items_length = $('.art_click_count').length; if (click_items_length > 0) { var id_str = ''; $('.art_click_count').each(function () { id_str += $(this).attr('data-id') + ','; }) var url = "/d/api/getclickbyids.html"; var id_data = 'id_str=' + id_str; $.ajax({ url: url, data: id_data, type: 'post', dataType: 'json', success: function (re) { if (re.list.length >= 1) { var list = re.list; for (var i in list) { var temp_id = list[i]['id']; var temp_span = $(".art_click_count[data-id=" + temp_id + "]") temp_span.html(list[i]['click']); } } } }) } function CheckLogin() { //alert(11) now_uid = ''; var ElecfansApi_checklogin = '/webapi/passport/checklogin'; var logout_url = "/d/login/logout.html"; var logout_url = 'https://bbs.elecfans.com/member.php?mod=logging&action=logout&refer=front'; $.get(ElecfansApi_checklogin, function (data, textStatus) { if (data != "") { EchoLoginInfo(data); CheckEmailInfo(data); data = $.parseJSON(data); now_uid = data.uid; /*var login_content = '<a href="/d/article/write/" class="btn write-article"><i class="icon-new-message"></i> 写文章</a><div class="mine" id="mine"><a class="item user" href="/d/user/'+now_uid+'/"><img src="'+data.avatar+'" width="33" height="33" /> <strong>'+data.username+'</strong></a><div id="mymenu" class="my-menu"><a class="logout" href="'+logout_url+'" ><i class="icon-switch"></i> 退出</a></div></div>';*/ var login_content = '<a href="javascript:;" class="btn write-article" id="write_btn"><i class="icon-new-message"></i> 写文章</a><div class="mine" id="mine"><a class="item user" href="/d/user/' + now_uid + '/"><img src="' + data.avatar + '" width="33" height="33" /> <strong>' + data .username + '</strong></a><div id="mymenu" class="my-menu"><a class="setting" href="https://bbs.elecfans.com/home.php?mod=spacecp" target="_blank" ><i class="icon-cog"></i> 设置</a><a class="logout" href="' + logout_url + '" ><i class="icon-switch"></i> 退出</a></div></div>'; $('#login_area').html(login_content); var win_width = $(window).width(); if (win_width > 1000) { $("#mine").mouseDelay(200).hover(function () { $("#mymenu").show(); }, function () { $("#mymenu").hide(); }); }; $('.newheader2021_tip_msg .tip_msg_num').text(data.msgnum).css({ 'display': 'inline' }); $('.no_login_2021').hide(); $('.yes_login_2021_more').css({ 'display': 'flex' }); $('.yes_login_2021').attr('href', 'https://bbs.elecfans.com/user/' + data.uid); $('.yes_login_2021 .vtm').attr('src', data.avatar); var yesLoginMoreBox = $('.yes_login_2021_more_box'); yesLoginMoreBox.find('.header_logo_2021').attr('href', 'https://bbs.elecfans.com/user/' + data .uid); yesLoginMoreBox.find('.header_logo_2021 img').attr('src', data.avatar); yesLoginMoreBox.find('.header_logo_right_2021').attr('href', 'https://bbs.elecfans.com/user/' + data.uid); yesLoginMoreBox.find('.usename_href_2021').attr('href', 'https://bbs.elecfans.com/user/' + data .uid).text(data.username); $(".header_bottom_2021 .favorite_articles_2021").attr("href", "https://bbs.elecfans.com/user/" + data.uid + "/favorite_articles?from=daohang"); $(".header_bottom_2021 .spacecp_2021").attr("href", "https://bbs.elecfans.com/home.php?mod=space&uid=" + data.uid + "&do=profile&from=daohang"); if (data.vip == 1) { yesLoginMoreBox.find('.header_VIP_2021').hide(); yesLoginMoreBox.find('.vip_icon img').attr('src', 'https://skin.elecfans.com/images/2021-soft/vip_icon2.png'); }; } else { remainLog(); var content = '<a class="item special-login " href="javascript:;" title="">登录</a><a class="item" href="https://bbs.elecfans.com/member.php?mod=reg" target="_blank">注册</a>'; $('#login_area').html(content); //.send-write,.absolute-write $(".special-login").click(function (e) { $.tActivityLogin(); return false; }); $('.no_login_2021').click(function () { $.ssoDialogLogin(); }) } }); } function getCookie(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return unescape(arr[2]); else return null; } //添加提示注册引导 function remainLog() { if ($("#remainLogBox").length > 0) { return false; } var getRemainShow = getCookie('REMAINSHOWLOG'); /*设置注册框的主题内容*/ var content = '<div id="remainLogBox">' + '<div class="sso_layer"></div>' + '<div class="remain-log clearfix">' + '<div class="fl LogBgPart">' + '<h3>电子发烧友</h3> ' + '<p>中国电子工程师最喜欢的网站</p> ' + '<ul>' + '<li>与<span id="downNum">2931785</span>位工程师会员交流学习</li>' + '<li>获取您个性化的科技前沿技术信息</li> ' + '<li>参加活动获取丰厚的礼品</li> ' + '</ul>' + '</div>' + '<div class="fr LogRightPart">' + '<div id="colseRemainLog"><img src="https://skin.elecfans.com/images/remain_log_colse.png"></div>' + '<div id="ssoScrollLog"></div>' + '</div>' + '</div>' + '</div>'; $("body").append(content); $("#colseRemainLog").click(function () { var Days = 1; var exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); /*存储cookie 用于点击关闭后一天不显示*/ document.cookie = 'REMAINSHOWLOG' + "=" + '1' + ";path= " + "/" + ";expires=" + exp.toGMTString(); $("#remainLogBox").remove(); $("html").css('overflow-y', 'auto'); }); setTimeout(function () { var netHost = window.location.host.split("."); $.ajax({ url: 'https://www.elecfans.' + netHost[2] + '/webapi/passport/totalaccount', dataType: 'json', success: function (data) { if (data.status == "successed") { $("#downNum").html(data.data.num); } } }) }, 1000); var getPathHref = location.pathname; /*判断是否是首页*/ if (getPathHref.length > 1 && getPathHref != "/index.html" && ($(".side-box.author-article").length > 0 || $( ".article .article-content").length > 0)) { var getLoadPageNum = getCookie('LoadPageNum'); if (getLoadPageNum) { var LoadPageUrl = getCookie('LoadPageUrl'); if (LoadPageUrl != location.pathname) { $(window).scroll(function () { /*滚动一屏页面后显示*/ if ($(window).scrollTop() > ($(window).height() / 2)) { if (getRemainShow != 1) { if ($("#remainLogBox").length > 0) { $("#remainLogBox").show(); $("html").css('overflow-y', 'hidden'); } } } }) } } else { var Days = 1; var exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); /*存储cookie 用于点击关闭后一天不显示*/ document.cookie = 'LoadPageNum' + "=" + '1' + ";path= " + "/" + ";expires=" + exp.toGMTString(); var LoadPageUrl = getCookie('LoadPageUrl'); if (!LoadPageUrl) { document.cookie = 'LoadPageUrl' + "=" + location.pathname + ";path= " + "/" + ";expires=" + exp .toGMTString(); } } } } $(function () { var follow_wrap = $(".author-collect"); var now_uid = ""; var face_src = ""; var getFollowNum = $(".followNum strong").html(); //关注 $(window).on('click', '.author-collect', function () { if (now_uid == '') { $.tActivityLogin(); return false; } if($(".store_flag").val() == 15){ //企业号文章 if($(".evip_id").length == 0){return false} if ($(this).attr('id') == 'follow') { $.post('/webapi/home/evipArticle/followEvip', { evip_id : $(".evip_id").val(), action:'follow' }, function (data) { //返回的数据格式: if (data.code == "0") { follow_wrap.html('已关注').attr('id', 'cancelFollow').addClass( 'is-active'); }else{ alert(data.msg); } }); }else{ $.post('/webapi/home/evipArticle/followEvip',{ evip_id : $(".evip_id").val(), action:'cancel' }, function (data) { //返回的数据格式: if (data.code == "0") { follow_wrap.html('关注').attr('id', 'follow').removeClass( "is-active"); }else{ alert(data.msg); } }); } }else{ if ($(this).attr('id') == 'follow') { $.post('/d/user/follow', { tuid: article_user_id }, function (data) { //返回的数据格式: if (data.status == "successed") { $(".followNum strong").html(++getFollowNum); // follow_wrap.html('已关注').attr('id','cancelFollow').css('background','#999'); follow_wrap.html('已关注').attr('id', 'cancelFollow').addClass( 'is-active'); var follow_user = '<a href="/d/user/' + now_uid + '/" data-uid="' + now_uid + '" class="face" rel="nofollow"><img src="' + face_src + '"></a>'; $('#follow_list').append(follow_user); } if (data.status == "failed") { alert(data.msg); } }); }else{ $.post('/d/user/cancelFollow',{tuid: article_user_id }, function (data) { //返回的数据格式: if (data.status == "successed") { // follow_wrap.html('关注').attr('id', 'follow').css('background', '#f90'); follow_wrap.html('关注').attr('id', 'follow').removeClass( "is-active"); $(".followNum strong").html(--getFollowNum); $('#follow_list .face').each(function () { var target_uid = $(this).attr('data-uid'); if (target_uid == now_uid) { $(this).remove(); } }) } if (data.status == "failed") { alert(data.msg); } }); } } }); }); // 绑定手机号 $(".send-write").click(function () { $.ajax({ url: '/webapi/passport/checklogin', type: "get", dataType: 'json', success: function (login) { if (login == null) { $.ssoDialogLogin(); } else { isVerification(function () { window.open("/d/article/write/") }) } } }) }); /* * ********: 验证手机号 * callback: 验证成功的回调函数 */ // isVerification(function(){ // //完成手机号验证 后判断是否完善资料 // isPerfectInfo($,document,function(){},false,true) // }) function isVerification_d(callback, article_write) { var passport = null; var bbs_host = null; if (location.host.indexOf(".com") > 0) { passport = window.location.protocol + "//passport.elecfans.com"; www_host = window.location.protocol + "//www.elecfans.com"; } else { passport = window.location.protocol + "//passport.elecfans.net"; www_host = window.location.protocol + "//www.elecfans.net"; } $.ajax({ url: www_host + '/webapi/passport/checklogin', type: "get", dataType: 'json', success: function (login) { if (login) { $.ajax({ url: www_host + '/webapi/Mcenter/sms/getvalidstatus', type: "post", dataType: 'json', success: function (res) { var phoneTxt = "<p style='text-indent: 20px;margin-bottom: 10px;'>您好!为确保您账户的安全及正常使用,依《网络安全法》相关要求,4月22日起账户需绑定手机,如您还未绑定,请尽快完成,感谢您的理解及支持!</p>" var setHtml = function () { var _iframe = null; if (article_write === "article_write") { _iframe = '<div class="pop_verification_mask"><div class="pop_verification phone_verification">' + '<h6>请验证手机<i class="close_icon_d close_verification">╳</i></h6>' + '<div class="desc_txt">尊敬的用户:<br>' + phoneTxt + '</div>' + '<iframe class="phone_iframe" width="520" height="580" src="' + passport + '/Security/validatePhone/siteid/14.html"></iframe>' + '</div></div>' $('body').append(_iframe).ready(function () { $(".close_verification:eq(0)").click( function (e) { e.stopPropagation(); $.ajax({ url: www_host + '/webapi/Mcenter/sms/getvalidstatus', type: "post", dataType: 'json', success: function ( res) { if (res.data .phonestatus == 0) { layer .msg( "请先验证手机号" ) } else { $(".pop_verification_mask") .remove() } } }) }) }) } else { _iframe = '<div class="pop_verification_mask"><div class="pop_verification phone_verification">' + '<h6>请验证手机<i class="close_icon_d close_verification">╳</i></h6>' + '<div class="desc_txt">尊敬的用户:<br>' + phoneTxt + '</div>' + '<iframe class="phone_iframe" id="verificationIframe" width="488" height="580" src="' + passport + '/Security/validatePhone/siteid/14.html"></iframe>' + '</div></div>' $('body').append(_iframe).ready(function () { $(".close_verification:eq(0)").click( function (e) { e.stopPropagation(); $(".pop_verification").remove() if ($(".pop_verification_mask") .length >= 1) { $(".pop_verification_mask") .remove() } }); }) } } //已经验证手机号 if (res.data.phonestatus == 1) { if (typeof callback === "function") { callback() } } else { setHtml(); //没有完成验证先弹出手机验证 // 接受数据 // $.receiveMessage(function(msg){ // // 接收到纯数字时设置iframe的高度 // if($.isNumeric(msg.data)){ // }else if(typeof(msg.data)=="string"){ // } // }, passport); } } }) } else { //调用登录 $.ssoDialogLogin(); //单点登录 return false; //弹出登录 } } }) } $('body').css({ 'background-color': '#fff' }); $('.newheader2021').css({ 'border-bottom': 'solid 1px #e5e5e5' }); </script> <script src="https://staticd.elecfans.com/js/common.js?20230818"></script> <script src="https://staticd.elecfans.com/plugins/layer/layer.js"></script> <script src="https://skin.elecfans.com/js/elecfans/road_ad.js?20230818" defer></script> <script src="https://skin.elecfans.com/js/elecfans/organizing/js/organizing.js?20230710"></script> <script src="https://skin.elecfans.com/js/elecfans/interview.js?20230724"></script> <script type="text/javascript" src="https://staticd.elecfans.com/plugins/layer/layer.js"></script> <script type="text/javascript" src="/static/vendor/clipboard.min.js"></script> <script type="text/javascript" src="https://staticd.elecfans.com/js/share-web.js?20220223"></script> <script> var myface = "https://bbs.elecfans.com/uc_server/data/avatar/000/00/00/00_avatar_small.jpg"; var myname = ""; var article_title = 'python爬虫框架Scrapy实战案例!'; var article_id = 828560; var article_user_id = 2737481;//文章作者ID var article_user_name = '马哥Linux运维'; var rightHeightChange = false; //专栏用户数据获取 var zlMp = $('input[name="zl_mp"]').val(); //是专栏用户 if (zlMp) { $.ajax({ url:"/d/Column/getUserCount", type:'get', data:{uid:article_user_id}, success:function(res){ if(res.code === 0){ //修改数量 $('.column-article-count').text(res.data.article); $('.column-view-count').text(res.data.view); $('.column-follow-count').text(res.data.follow_count); $('.column-praise-count').text(res.data.all_click); } else { console.log(res); } } }) } if(article_id) { dIsOriginal() } //原创标识接口 function dIsOriginal() { $.ajax({ url:"/webapi/arcinfo/isOriginal", type:'get', data:{aid:article_id}, success:function(re){ var res=JSON.parse(re) if(res.status==="successed"){ //1原创标识 if(res.data.is_original==1){ $(".yuanchuan_images").show() }else{ $(".yuanchuan_images").remove() } }else{ $(".yuanchuan_images").remove() } } }); } $('#delete_art').click(function(){ var art_id = $(this).attr('data-id'); var url = '/d/article/delete'; var data = "id="+art_id; layer.confirm('确定要删除?', { btn: ['取消','确定'] //按钮 }, function(){ layer.msg('已经取消', {icon: 1}); }, function(){ $.ajax({ url:url, type:'post', data:data, success:function(re){ if(re.error_code==200){ var uid = re.uid; var lurl = '/d/user/'+uid+'/'; layer.msg('已经删除', {icon: 1}); window.location.href = lurl; }else{ layer.msg(re.msg,{icon:1}); } } }) }); }); </script> <script src="https://staticd.elecfans.com/js/xgPlayer.js"></script> <script src="https://staticd.elecfans.com/js/article.js?v=20240328"></script> <script src="https://staticd.elecfans.com/js/column_article.js?v=c202307271023"></script> <script> $(document).ready(()=>{ /**推荐文章 */ $.ajax({ url: "/d/article/getArcList", type: "get", data: { type: "recommend", page: 1, size: 5 }, success: function (res) { if (res.code == 0) { renderArticle(res.data); rightHeightChange = true } else { $(".dzs-article-recom").hide(); } }, }); /**推荐企业号 */ if($(".store_flag").val() == 15){ $.ajax({ url: "/webapi/home/evip/getRecommendFollow", type: "get", success: function (res) { if(res.code == 0 && Array.isArray(res.data)){ var qyStr = '' for(var r = 0;r<res.data.length;r++){ var qyItem =res.data[r]; var jumpUrl = window.location.origin + '/d/c' + qyItem.apply_uid; var itemIcon = ''; var tagsArr = (qyItem.belong_to_industry || []).split(",") tagsArr = tagsArr.splice(0,3) var is_follow = qyItem.is_follow == 1?'focus':'unFocus' if(qyItem.ver_id == 1 || qyItem.ver_id == 2){ itemIcon= '/static/main/img/qyh/pro_vip_sm.png' }else if(qyItem.ver_id == 3){ itemIcon= '/static/main/img/qyh/enjoy_vip_sm.png' } else { itemIcon= '/static/main/img/qyh/common_vip_sm.png' } qyStr +='<li><a href="'+jumpUrl+'" target="_blank" class="block" >'; qyStr += '<div class="enterInfo">' qyStr += '<div class="enterImg">' qyStr += '<img src="'+qyItem.enterprise_head_url+'" class="companyImg objectFit"/>' qyStr += '</div>' qyStr += '<div class="enterDes">' qyStr += '<div class="name">' qyStr +='<img src="'+itemIcon+'" alt="">' qyStr +='<h5>'+qyItem.enterprise_name +'</h5>' qyStr +='</div>' qyStr +='<div class="companyName">'+qyItem.company_name +'</div>' qyStr += '<div class="tags">' for(var t = 0;t<tagsArr.length;t++){ qyStr += '<span>'+tagsArr[t]+'</span>' } qyStr += '</div>' qyStr += '</div>' qyStr += '</div>' qyStr += '<div class="industry">' qyStr += '<div class="view">' qyStr += '<span>'+qyItem.archives_count+'内容</span>' qyStr += '<span>'+ qyItem.view_count +'浏览量</span>' qyStr += '<span>'+qyItem.follow_count +'粉丝</span>' qyStr += '</div>' if(qyItem.is_follow == 1){ qyStr += '<span class="qyhFocus focus" data-qyId="'+qyItem.id +'"></span>' }else{ qyStr += '<span class="qyhFocus unFocus" data-qyId="'+qyItem.id +'">+关注</span>' } qyStr += '</div>' qyStr += '</a>' qyStr += '</li>' } $(".enterWrap-qyh").append(qyStr) } } }) //企业号关注和取消关注 $(".enterWrap-qyh").on("click",".qyhFocus",function(){ if($(".is-login").length>0 && $(".is-login").attr("data-uid")){ var hasFocus = $(this).hasClass("focus"); var qyId = $(this).attr("data-qyId") var that = $(this) $.post('/webapi/home/evipArticle/followEvip', { evip_id : qyId, action:hasFocus?'cancel':'follow' }, function (data) { //返回的数据格式: if (data.code == "0") { if(hasFocus){ that.removeClass("focus").addClass("unFocus").text("+关注") }else{ that.removeClass("unFocus").addClass("focus").text("") } }else{ alert(data.msg); } }); }else{ $.ssoDialogLogin(); } return false }) }else{ /**推荐专栏 */ $.ajax({ url: "/d/article/getZlList", type: "get", data: { type: "recommend", page: 1, size: 5 }, success: function (res) { if (res.code == 0) { renderColumn(res.data,""); rightHeightChange = true } else { $(".dzs-article-column").hide(); } }, }); } }) </script> <script src="https://staticd.elecfans.com/js/artilePartjs.js?20230906"></script> </body> </html>