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

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

3天内不再提示

如何用Python编程下载和解析英文版维基百科

MqC7_CAAI_1981 2018-11-04 10:37 次阅读

没人否认,维基百科是现代最令人惊叹的人类发明之一。

几年前谁能想到,匿名贡献者们的义务工作竟创造出前所未有的巨大在线知识库?维基百科不仅是你写大学论文时最好的信息渠道,也是一个极其丰富的数据源。

从自然语言处理到监督式机器学习,维基百科助力了无数的数据科学项目。

维基百科的规模之大,可称为世上最大的百科全书,但也因此稍让数据工程师们感到头疼。当然,有合适的工具的话,数据量的规模就不是那么大的问题了。

本文将介绍“如何编程下载和解析英文版维基百科”。

在介绍过程中,我们也会提及以下几个数据科学中重要的问题:

1、从网络中搜索和编程下载数据

2、运用Python库解析网络数据(HTML, XML, MediaWiki格式)

3、多进程处理、并行化处理

这个项目最初是想要收集维基百科上所有的书籍信息,但我之后发现项目中使用的解决方法可以有更广泛的应用。这里提到的,以及在Jupyter Notebook里展示的技术,能够高效处理维基百科上的所有文章,同时还能扩展到其它的网络数据源中。

本文中运用的Python代码的笔记放在GitHub,灵感来源于Douwe Osinga超棒的《深度学习手册》。前面提到的Jupyter Notebooks也可以免费获取。

GitHub链接:

https://github.com/WillKoehrsen/wikipedia-data-science/blob/master/notebooks/Downloading%20and%20Parsing%20Wikipedia%20Articles.ipynb

免费获取地址:

https://github.com/DOsinga/deep_learning_cookbook

编程搜索和下载数据

任何一个数据科学项目第一步都是获取数据。我们当然可以一个个进入维基百科页面打包下载搜索结果,但很快就会下载受限,而且还会给维基百科的服务器造成压力。还有一种办法,我们通过dumps.wikimedia.org这个网站获取维基百科所有数据的定期快照结果,又称dump。

用下面这段代码,我们可以看到数据库的可用版本:

import requests# Library for parsing HTMLfrom bs4 import BeautifulSoupbase_url = 'https://dumps.wikimedia.org/enwiki/'index = requests.get(base_url).textsoup_index = BeautifulSoup(index, 'html.parser')# Find the links on the pagedumps = [a['href'] for a in soup_index.find_all('a') if a.has_attr('href')]dumps['../', '20180620/', '20180701/', '20180720/', '20180801/', '20180820/', '20180901/', '20180920/', 'latest/']

这段代码使用了BeautifulSoup库来解析HTML。由于HTML是网页的标准标识语言,因此就处理网络数据来说,这个库简直是无价瑰宝。

本项目使用的是2018年9月1日的dump(有些dump数据不全,请确保选择一个你所需的数据)。我们使用下列代码来找到dump里所有的文件。

dump_url = base_url + '20180901/'# Retrieve the htmldump_html = requests.get(dump_url).text# Convert to a soupsoup_dump = BeautifulSoup(dump_html, 'html.parser')# Find list elements with the class filesoup_dump.find_all('li', {'class': 'file'})[:3][

  • enwiki-20180901-pages-articles-multistream.xml.bz2 15.2 GB
  • ,
  • enwiki-20180901-pages-articles-multistream-index.txt.bz2 195.6 MB
  • ,
  • enwiki-20180901-pages-meta-history1.xml-p10p2101.7z 320.6 MB
  • ]

    我们再一次使用BeautifulSoup来解析网络找寻文件。我们可以在https://dumps.wikimedia.org/enwiki/20180901/页面里手工下载文件,但这就不够效率了。网络数据如此庞杂,懂得如何解析HTML和在程序中与网页交互是非常有用的——学点网站检索知识,庞大的新数据源便触手可及。

    考虑好下载什么

    上述代码把dump里的所有文件都找出来了,你也就有了一些下载的选择:文章当前版本,文章页以及当前讨论列表,或者是文章所有历史修改版本和讨论列表。如果你选择最后一个,那就是万亿字节的数据量了!本项目只选用文章最新版本。

    所有文章的当前版本能以单个文档的形式获得,但如果我们下载解析这个文档,就得非常费劲地一篇篇文章翻看,非常低效。更好的办法是,下载多个分区文档,每个文档内容是文章的一个章节。之后,我们可以通过并行化一次解析多个文档,显著提高效率。

    “当我处理文档时,我更喜欢多个小文档而非一个大文档,这样我就可以并行化运行多个文档了。”

    分区文档格式为bz2压缩的XML(可扩展标识语言),每个分区大小300~400MB,全部的压缩包大小15.4GB。无需解压,但如果你想解压,大小约58GB。这个大小对于人类的全部知识来说似乎并不太大。

    维基百科压缩文件大小

    下载文件

    Keras 中的get_file语句在实际下载文件中非常好用。下面的代码可通过链接下载文件并保存到磁盘中:

    from keras.utils import get_filesaved_file_path = get_file(file, url)

    下载的文件保存在~/.keras/datasets/,也是Keras默认保存设置。一次性下载全部文件需2个多小时(你可以试试并行下载,但我试图同时进行多个下载任务时被限速了)

    解析数据

    我们首先得解压文件。但实际我们发现,想获取全部文章数据根本不需要这样。我们可以通过一次解压运行一行内容来迭代文档。当内存不够运行大容量数据时,在文件间迭代通常是唯一选择。我们可以使用bz2库对bz2压缩的文件迭代。

    不过在测试过程中,我发现了一个更快捷(双倍快捷)的方法,用的是system utility bzcat以及Python模块的subprocess。以上揭示了一个重要的观点:解决问题往往有很多种办法,而找到最有效办法的唯一方式就是对我们的方案进行基准测试。这可以很简单地通过%%timeit Jupyter cell magic来对方案计时评价。

    迭代解压文件的基本格式为:

    data_path = '~/.keras/datasets/enwiki-20180901-pages-articles15.xml-p7744803p9244803.bz2# Iterate through compressed file one line at a timefor line in subprocess.Popen(['bzcat'], stdin = open(data_path), stdout = subprocess.PIPE).stdout: # process line

    如果简单地读取XML数据,并附为一个列表,我们得到看起来像这样的东西:

    维基百科文章的源XML

    上面展示了一篇维基百科文章的XML文件。每个文件里面有成千上万篇文章,因此我们下载的文件里包含百万行这样的语句。如果我们真想把事情弄复杂,我们可以用正则表达式和字符串匹配跑一遍文档来找到每篇文章。这就极其低效了,我们可以采取一个更好的办法:使用解析XML和维基百科式文章的定制化工具。

    解析方法

    我们需要在两个层面上来解析文档:

    1、从XML中提取文章标题和内容

    2、从文章内容中提取相关信息

    好在,Python对这两个都有不错的应对方法。

    解析XML

    解决第一个问题——定位文章,我们使用SAX(Simple API for XML) 语法解析器。BeautifulSoup语句也可以用来解析XML,但需要内存载入整个文档并且建立一个文档对象模型(DOM)。而SAX一次只运行XML里的一行字,完美符合我们的应用场景。

    基本思路就是我们对XML文档进行搜索,在特定标签间提取相关信息。例如,给出下面这段XML语句:

    Carroll F. Knicely'''Carroll F. Knicely''' (born c. 1929 in [[Staunton, Virginia]] - died November 2, 2006 in [[Glasgow, Kentucky]]) was [[Editing|editor]] and [[Publishing|publisher]] of the ''[[Glasgow Daily Times]]'' for nearly 20 years (and later, its owner) and served under three [[Governor of Kentucky|Kentucky Governors]] as commissioner and later Commerce Secretary. '

    我们想筛出在和<text>这两<a href="https://m.hqchip.com/tags" target="_blank"><u>标签</u></a>间的内容(这个title就是维基百科文章标题,text就是文章内容)。SAX能直接让我们实现这样的功能——通过parser和ContentHandler这两个语句来控制信息如何通过解析器然后被处理。每次扫一行XML句子进解析器,Content Handler则帮我们提取相关的信息。</p> <p style="text-indent: 2em;"> 如果你不尝试做一下,可能理解起来有点难度,但是Content handler的思想是寻找开始标签和结束标签之间的内容,将找到的字符添加到缓存中。然后将缓存的内容保存到字典中,其中相应的标签作为对应的键。最后我们得到一个键是标签,值是标签中的内容的字典。下一步,我们会将这个字典传递给另一个函数,它将解析字典中的内容。</p> <p style="text-indent: 2em;"> 我们唯一需要编写的SAX的部分是Content Handler。全文如下:</p> <p style="text-indent: 2em;"> 在这段代码中,我们寻找标签为title和text的标签。每次解析器遇到其中一个时,它会将字符保存到缓存中,直到遇到对应的结束标签(</tag>)。然后它会保存缓存内容到字典中-- self._values。文章由<page>标签区分,如果Content Handler遇到一个代表结束的</page>标签,它将添加self._values 到文章列表(self._pages)中。如果感到疑惑了,实践观摩一下可能会有帮助。</p> <p style="text-indent: 2em;"> 下面的代码显示了如何通过XML文件查找文章。现在,我们只是将它们保存到handler._pages中,稍后我们将把文章发送到另一个函数中进行解析。</p> <p style="text-indent: 2em;"> # Object for handling xmlhandler = WikiXmlHandler()# Parsing objectparser = xml.sax.make_parser()parser.setContentHandler(handler)# Iteratively process filefor line in subprocess.Popen(['bzcat'], stdin = open(data_path), stdout = subprocess.PIPE).stdout: parser.feed(line) # Stop when 3 articles have been found if len(handler._pages) > 2: break</p> <p style="text-indent: 2em;"> 如果我们观察handler._pages,我们将看到一个列表,其中每个元素都是一个包含一篇文章的标题和内容的元组:</p> <p style="text-indent: 2em;"> handler._pages[0][('Carroll Knicely', "'''Carroll F. Knicely''' (born c. 1929 in [[Staunton, Virginia]] - died November 2, 2006 in [[Glasgow, Kentucky]]) was [[Editing|editor]] and [[Publishing|publisher]] ...)]</p> <p style="text-indent: 2em;"> 此时,我们已经编写的代码可以成功地识别XML中的文章。现在我们完成了解析文件一半的任务,下一步是处理文章以查找特定页面和信息。再次,我们使用专为这项工作而创建的一个工具。</p> <p style="text-indent: 2em;"> 解析维基百科文章</p> <p style="text-indent: 2em;"> 维基百科运行在一个叫做MediaWiki的软件上,该软件用来构建wiki。这使文章遵循一种标准格式,这种格式可以轻易地用编程方式访问其中的信息。虽然一篇文章的文本看起来可能只是一个字符串,但由于格式的原因,它实际上编码了更多的信息。为了有效地获取这些信息,我们引进了强大的 mwparse<a href="https://www.elecfans.com/tongxin/rf/" target="_blank"><u>rf</u></a><a href="http://www.elecfans.com/tags/rom/" target="_blank"><u>rom</u></a>hell, 一个为处理MediaWiki内容而构建的库。</p> <p style="text-indent: 2em;"> 如果我们将维基百科文章的文本传递给mwparserfromhell,我们会得到一个Wikicode对象,它含有许多对数据进行排序的方法。例如,以下代码从文章创建了一个wikicode对象,并检索文章中的wikilinks()。这些链接指向维基百科的其他文章:</p> <p style="text-indent: 2em;"> import mwparserfromhell# Create the wiki articlewiki = mwparserfromhell.parse(handler._pages[6][1])# Find the wikilinkswikilinks = [x.title for x in wiki.filter_wikilinks()]wikilinks[:5]['Provo, Utah', 'Wasatch Front', 'Megahertz', 'Contemporary hit radio', 'watt']</p> <p style="text-indent: 2em;"> 有许多有用的方法可以应用于wikicode,例如查找注释或搜索特定的关键字。如果您想获得文章文本的最终修订版本,可以调用:</p> <p style="text-indent: 2em;"> wiki.strip_code().strip()'KENZ (94.9 FM, " Power 94.9 " ) is a top 40/CHR radio station bro<a href="http://www.elecfans.com/tags/adc/" target="_blank"><u>adc</u></a>asting to Salt Lake City, Utah '</p> <p style="text-indent: 2em;"> 因为我的最终目标是找到所有关于书籍的文章,那么是否有一种方法可以使用解析器来识别某个类别中的文章呢?幸运的是,答案是肯定的——使用MediaWiki templates。</p> <p style="text-indent: 2em;"> 文章模板</p> <p style="text-indent: 2em;"> 模板(templates)是记录信息的标准方法。维基百科上有无数的模板,但与我们的目的最相关的是信息框(Infoboxes)。有些模板编码文章的摘要信息。例如,战争与和平的信息框是:</p> <p align="center"> </p> <p style="text-indent: 2em;"> 维基百科上的每一类文章,如电影、书籍或广播电台,都有自己的信息框。在书籍的例子中,信息框模板被命名为Infobox book。同样,wiki对象有一个名为filter_templates()的方法,它允许我们从一篇文章中提取特定的模板。因此,如果我们想知道一篇文章是否是关于一本书的,我们可以通过book信息框去过滤。展示如下:</p> <p style="text-indent: 2em;"> # Filter article for book templatewiki.filter_templates('Infobox book')</p> <p style="text-indent: 2em;"> 如果匹配成功,那我们就找到一本书了!要查找你感兴趣的文章类别的信息框模板,请参阅信息框列表。</p> <p style="text-indent: 2em;"> 如何将用于解析文章的mwparserfromhell与我们编写的SAX解析器结合起来?我们修改了Content Handler中的endElement方法,将包含文章标题和文本的值的字典,发送到通过指定模板搜索文章文本的函数中。如果函数找到了我们想要的文章,它会从文章中提取信息,然后返回给handler。首先,我将展示更新后的endElement 。</p> <p style="text-indent: 2em;"> def endElement(self, name): """Closing tag of element""" if name == self._current_tag: self._values[name] = ' '.join(self._buffer) if name == 'page': self._article_count += 1 # Send the page to the process article function book = process_article(**self._values, template = 'Infobox book') # If article is a book append to the list of books if book: self._books.append(book)</p> <p style="text-indent: 2em;"> 一旦解析器到达文章的末尾,我们将文章传递到函数process_article,如下所示:</p> <p style="text-indent: 2em;"> def process_article(title, text, timestamp, template = 'Infobox book'): """Process a wikipedia article looking for template""" # Create a parsing object wikicode = mwparserfromhell.parse(text) # Search through templates for the template matches = wikicode.filter_templates(matches = template) if len(matches) >= 1: # Extr<a href="https://www.hqchip.com/app/1703" target="_blank"><u>ac</u></a>t information from infobox properties = {pa<a href="http://www.elecfans.com/tags/ram/" target="_blank"><u>ram</u></a>.name.strip_code().strip(): param.value.strip_code().strip() for param in matches[0].params if param.value.strip_code().strip()} # Extract internal wikilinks</p> <p style="text-indent: 2em;"> 虽然我正在寻找有关书籍的文章,但是这个函数可以用来搜索维基百科上任何类别的文章。只需将模板替换为指定类别的模板(例如Infobox language是用来寻找语言的),它只会返回符合条件的文章信息。</p> <p style="text-indent: 2em;"> 我们可以在一个文件上测试这个函数和新的ContentHandler。</p> <p style="text-indent: 2em;"> Searched through 427481 articles.Found 1426 books in 1055 seconds.</p> <p style="text-indent: 2em;"> 让我们看一下查找一本书的结果:</p> <p style="text-indent: 2em;"> books[10]['War and Peace', {'name': 'War and Peace', 'author': 'Leo Tolstoy', 'language': 'Russian, with some French', 'country': 'Russia', 'genre': 'Novel (Historical novel)', 'publisher': 'The Russian Messenger (serial)', 'title_orig': 'Война и миръ', 'orig_lang_code': 'ru', 'translator': 'The first translation of War and Peace into English was by American Nathan Haskell Dole, in 1899', 'image': 'Tolstoy - War and Peace - first edition, 1869.jpg', 'caption': 'Front page of War and Peace, first edition, 1869 (Russian)', 'release_date': 'Serialised 1865–1867; book 1869', 'media_type': 'Print', 'pages': '1,225 (first published edition)'}, ['Leo Tolstoy', 'Novel', 'Historical novel', 'The Russian Messenger', 'Serial (publishing)', 'Category:1869 Russian novels', 'Category:Epic novels', 'Category:Novels set in 19th-century Russia', 'Category:Russian novels <a href="https://bbs.elecfans.com/zhuti_1472_1.html" target="_blank"><u>ad</u></a>apted into films', 'Category:Russian philosophical novels'], ['https://books.google.com/?id=c4HEAN-ti1MC', 'https://www.britannica.com/art/English-literature', 'https://books.google.com/books?id=xf7umXHGDPcC', 'https://books.google.com/?id=E5fotqsglPEC', 'https://books.google.com/?id=9sHebfZIXFAC'], '2018-08-29T02:37:35Z']</p> <p style="text-indent: 2em;"> 对于维基百科上的每一本书,我们把信息框中的信息整理为字典、书籍在维基百科中的wikilinks信息、书籍的外部链接和<a href="https://www.elecfans.com/article/zt/" target="_blank"><u>最新</u></a>编辑的时间戳。(我把精力集中在这些信息上,为我的下一个项目建立一个图书<a href="https://www.elecfans.com/v/" target="_blank"><u>推荐</u></a>系统)。你可以修改process_article函数和WikiXmlHandler类,以查找任何你需要的信息和文章!</p> <p style="text-indent: 2em;"> 如果你看一下只处理一个文件的时间,1055秒,然后乘以55,你会发现处理所有文件的时间超过了15个小时!当然,我们可以在一夜之间运行,但如果可以的话,我不想浪费额外的时间。这就引出了我们将在本项目中介绍的最后一种技术:使用多处理和多线程进行并行化。</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;"> 通常,多线程对于输入/输出绑定任务(例如读取文件或发出请求)更好(更快)。多处理对于<a href="https://www.elecfans.com/v/tag/132/" target="_blank"><u>cpu</u></a>密集型任务更好(更快)。对于解析文章的过程,我不确定哪种方法是最优的,因此我再次用不同的<a href="https://www.hqchip.com/ic/0" target="_blank"><u>参数</u></a>对这两种方法进行了基准测试。</p> <p style="text-indent: 2em;"> 学习如何进行测试和寻找不同的方法来解决一个问题,你将会在数据科学或任何技术的职业生涯中走得更远。</p> <p style="text-indent: 2em;"> 相关报道:</p> <p style="text-indent: 2em;"> https://toward<a href="https://m.hqchip.com/app/1522" target="_blank"><u>sd</u></a>atascience.com/wikipedia-data-science-working-with-the-worlds-largest-encyclopedia-c08efbac5f5c</p> <p style="text-indent: 2em;"> 【今日机器学习概念】</p> <p style="text-indent: 2em;"> Have a Great Definition</p> <p align="center"> </p> <!-- <iframe id="articleDetailIframe" src="about:blank" frameborder="0" width="100%" scrolling="no"></iframe> <div id="articleDetailContent" class="simditor-body" style="display: none;"></div> --> </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/编程/"> <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="5440">+关注</div> </div> <div id="tag_desc_button5440"></div> <div class="clearfix des-detail"> <div class="lf"> <p>关注</p> <span>88</span> </div> <div class="lf"> <p>文章</p> <span>3439</span> </div> <div class="lf"> <p>浏览量</p> <span>92374</span> </div> </div> </div> </div> </li><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>51</span> </div> <div class="lf"> <p>文章</p> <span>4674</span> </div> <div class="lf"> <p>浏览量</p> <span>83458</span> </div> </div> </div> </div> </li> </ul> <!-- 广告中台 --> <div class="articleContentFooterAD" style="display: none; margin: 20px 0 0 0;"></div> <div class="wx_detail"> <p>原文标题:维基百科中的数据科学:手把手教你用Python读懂全球最大百科全书</p> <p>文章出处:【微信号:CAAI-1981,微信公众号:中国人工智能学会】欢迎添加关注!文章转载请注明出处。</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://www.elecfans.com/d/2327460.html" target="_blank" > <b class='flag-5'>python</b>运行环境的安装和配置</a> </h2> <div class="summary">环境的安装和配置,帮助您快速上手<b class='flag-5'>Python</b><b class='flag-5'>编程</b>。 <b class='flag-5'>下载</b><b class='flag-5'>Python</b>安装包 为了安装<b class='flag-5'>Python</b>,我们首先需要</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 11-29 16:17 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">532</span>次阅读 </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/d/2318233.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>语言属于高级<b class='flag-5'>编程</b>语言中的一种。它是一种通用、面向对象、解释型<b class='flag-5'>编程</b>语言。<b class='flag-5'>Python</b>由Guido van Rossum于198</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 11-22 14:31 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">638</span>次阅读 </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_2388607_1_1.html" target="_blank" > 请问如何接收<b class='flag-5'>和解析</b>单片机串口的数据,怎么防止丢失和断贞?</a> </h2> <div class="summary">请问大家如何接收<b class='flag-5'>和解析</b>单片机串口的数据,怎么防止丢失和断贞呢?</div> <div class="info"> <span class="fby">发表于</span> 11-08 07:57 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" > <h2 class="title"> <a href="https://www.elecfans.com/soft/Mec/2023/202311072304509.html" target="_blank" > TI典藏版电源管理指南(2014<b class='flag-5'>英文版</b>)</a> </h2> <div class="summary">电子发烧友网站提供《TI典藏版电源管理指南(2014<b class='flag-5'>英文版</b>).pdf》资料免费<b class='flag-5'>下载</b></div> <div class="info"> <span class="fby">发表于</span> 11-07 11:42 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">0</span>次下载 </div> <a href="https://www.elecfans.com/soft/Mec/2023/202311072304509.html" class="thumb" target="_blank"> <img src="https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png" alt="TI典藏版电源管理指南(2014<b class='flag-5'>英文版</b>)" /> </a> </div> <div class="article" > <h2 class="title"> <a href="https://www.elecfans.com/d/2299385.html" target="_blank" > 如何利用<b class='flag-5'>Python</b>和pandas来处理json数据</a> </h2> <div class="summary">json数据 1. JSON 简单介绍 1.1 什么是json数据 首先,我们看一段来自<b class='flag-5'>维基百科</b>对json的解释: JSON ( J ava S cr</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 11-01 10:59 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">626</span>次阅读 </div> <a href="https://www.elecfans.com/d/2299385.html" class="thumb" target="_blank"> <img src="https://file1.elecfans.com/web2/M00/AB/C4/wKgaomVBvvaACSrFAAB8lA8yvNY555.jpg" alt="如何利用<b class='flag-5'>Python</b>和pandas来处理json数据" /> </a> </div> <div class="article" > <h2 class="title"> <a href="https://www.elecfans.com/d/2282580.html" target="_blank" > 如<b class='flag-5'>何用</b><b class='flag-5'>Python</b>来实现文件系统的操作功能</a> </h2> <div class="summary">近几年随着 <b class='flag-5'>Python</b> 的热度不断上涨,人们渐渐使用这门<b class='flag-5'>编程</b>语言来进行一些自动化操作,以节省重复劳动带来的效率低下,那么必定会涉及到对 文件系统的操作 ,包括文件的 增、删、改、查 等等,今天</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 10-30 14:27 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">188</span>次阅读 </div> <a href="https://www.elecfans.com/d/2282580.html" class="thumb" target="_blank"> <img src="https://file1.elecfans.com/web2/M00/AB/4C/wKgaomU_TFyAdouzAAAGLFfce2g281.jpg" alt="如<b class='flag-5'>何用</b><b class='flag-5'>Python</b>来实现文件系统的操作功能" /> </a> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_2380953_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>指南</div> <div class="info"> <span class="fby">发表于</span> 10-07 08:43 <!-- <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_2380161_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'>Python</b> <b class='flag-5'>编程</b>,我们能够解决现实生活中的很多任务。本书是一本面向实践的 <b class='flag-5'>Python</b> </div> <div class="info"> <span class="fby">发表于</span> 09-27 06:21 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/emb/202309202252959.html" target="_blank" > <b class='flag-5'>Python</b><b class='flag-5'>编程</b>学习笔记(5)</a> </h2> <div class="summary"><b class='flag-5'>编程</b>时经常需要检查一系列条件,并据此决定采取什么措施。在<b class='flag-5'>Python</b>中,if 语句让你能够检查程序的当前状态,并据此采取相应的措施。</div> <div class="info"> <span class="fby">发表于</span> 09-20 16:19 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">356</span>次阅读 </div> </div> <div class="article" > <h2 class="title"> <a href="https://www.elecfans.com/emb/202309042234784.html" target="_blank" > <b class='flag-5'>Python</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'>编程</b>。<b class='flag-5'>Python</b>的面向对象<b class='flag-5'>编程</b>,与Java的面向对象很像。之所以需要面向对象</div> <div class="info"> <span class="fby">发表于</span> 09-04 16:35 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">268</span>次阅读 </div> <a href="https://www.elecfans.com/emb/202309042234784.html" class="thumb" target="_blank"> <img src="https://file1.elecfans.com/web2/M00/A2/F4/wKgaomT1lP-ATyzgAAAnCWZXAdU485.jpg" alt="<b class='flag-5'>Python</b>的面向对象<b class='flag-5'>编程</b>详解" /> </a> </div><div class="article is_video is_videoJump"> <div class="videobox "> <img src="https://file1.elecfans.com/web2/M00/A2/C9/wKgaomTzHN6AfE3BAADZiYK4gvE204.png" /> </div> <div class="contentbox"> <h2 class="title"> <a href="https://www.elecfans.com/v/444268" target="_self" > 表格数据抓取<b class='flag-5'>和解析</b>(2)#<b class='flag-5'>Python</b>数据分析 </a> </h2> <div class="summary" style="height:auto;margin-top: 0px;"> <span style="margin-top:10px ;"><b class='flag-5'>编程</b></span><span style="margin-top:10px ;"><b class='flag-5'>python</b></span> </div> <div class="info"> <span class="face s" style="color: #2897C5;margin-right: 10px;"> 未来加油dz </span> <div style="display: inline;"> 发布于 :2023年09月02日 19:30:47 </div> </div> </div> </div> <div class="article is_video is_videoJump"> <div class="videobox "> <img src="https://file1.elecfans.com/web2/M00/A2/C8/wKgaomTzDwaANvifAAEI7xz3VFo614.png" /> </div> <div class="contentbox"> <h2 class="title"> <a href="https://www.elecfans.com/v/444267" target="_self" > 表格数据抓取<b class='flag-5'>和解析</b>(1)#<b class='flag-5'>Python</b>数据分析 </a> </h2> <div class="summary" style="height:auto;margin-top: 0px;"> <span style="margin-top:10px ;"><b class='flag-5'>编程</b></span><span style="margin-top:10px ;"><b class='flag-5'>python</b></span> </div> <div class="info"> <span class="face s" style="color: #2897C5;margin-right: 10px;"> 未来加油dz </span> <div style="display: inline;"> 发布于 :2023年09月02日 19:29:48 </div> </div> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/d/2228141.html" target="_blank" > <b class='flag-5'>python</b>有什么用 如<b class='flag-5'>何用</b><b class='flag-5'>python</b>创建数据库</a> </h2> <div class="summary"><b class='flag-5'>python</b>有什么用 如<b class='flag-5'>何用</b><b class='flag-5'>python</b>创建数据库 <b class='flag-5'>Python</b>是一种高级<b class='flag-5'>编程</b>语言,可以用于开发各种类型的应用程序和工具。它的广泛应用使它在</div> <div class="info"> <a class="face s" href="" target="_blank" rel="nofollow"> <img src="" alt="的头像"/> </a> <span class="fby">发表于</span> 08-28 16:41 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">777</span>次阅读 </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://bbs.elecfans.com/jishu_2361471_1_1.html" target="_blank" > ECSPI不是和标准的SPI重合吗?</a> </h2> <div class="summary">没有任何关系。 但根据<b class='flag-5'>维基百科</b>,CPHA 似乎依赖于 CPOL。 ECSPI不是和标准的SPI重合吗? 下面是来自<b class='flag-5'>维基百科</b>的描述。 CPOL 决定时钟的极性。可以使用简单的反相器转换极性。 CPOL</div> <div class="info"> <span class="fby">发表于</span> 06-08 09:44 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> </div> </div> <div class="article" style="padding-left: 0px;"> <h2 class="title"> <a href="https://www.elecfans.com/soft/6/2023/202306062099763.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>实战 妙趣横生的项目之旅</div> <div class="info"> <span class="fby">发表于</span> 06-06 17:49 <!-- <span class="art_click_count" data-id=""></span>次阅读 --> <span class="sp">•</span><span class="" data-id="">1</span>次下载 </div> </div> </div> </div><!-- .main-wrap --> </article> <aside class="aside"> <!-- 非专栏 --> <input type="hidden" name="zl_mp" value="0"> <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/2745201.html" target="_blank"> <span>累计300亿投入!华为乾崑ADS3.0发布,创新驱动,引领智驾新征程</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">1小时前</div> <div class="text-view">129 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/2745122.html" target="_blank"> <span>构建高性能计算芯片</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://www.elecfans.com/d/user/4605669/" target="_blank">奇异摩尔</a> <div class="text-date">1小时前</div> <div class="text-view">153 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/2744625.html" target="_blank"> <span>官宣10家首批量产合作车企,地平线征程6发布即爆款</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">344 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/2743933.html" target="_blank"> <span>联想用万全智算,画出中国AI的山脊</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://www.elecfans.com/d/user/3450344/" target="_blank">脑极体</a> <div class="text-date">1小时前</div> <div class="text-view">112 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/d/2743210.html" target="_blank"> <span>如何实现用于实时控制的快速、精确和低功耗位置检测</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://www.elecfans.com/d/user/1052410/" target="_blank">eeDesign</a> <div class="text-date">17小时前</div> <div class="text-view">618 阅读</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 pdf"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/69/2011/20110711205872.html" target="_blank"> <span>ADC0809在两路数据采集系统中的应用</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/296925/" target="_blank">yezi888</a> <div class="text-date">417 KB</div> <div class="text-date">免费</div> <div class="text-down">181下载</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/32/2012/20120727281837.html" target="_blank"> <span>国外经典电子教材:电子电路分析与设计(第二版译文)</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/956378/" target="_blank">李坤</a> <div class="text-date">23.6 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 zip"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/Mec/2022/202205121832703.html" target="_blank"> <span>HServer-For-Docker Docker自动构建工具</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/2253516/" target="_blank">李慧</a> <div class="text-date">1.50 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 zip"></div> </div> <div class="col-right"> <h4 class="text-title"> <a href="https://www.elecfans.com/soft/Mec/2022/202206291854653.html" target="_blank"> <span>AI-Intelligent-Recognition AI智能识物小程序</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/1811679/" target="_blank">感谢相遇</a> <div class="text-date">0.83 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/202208221880506.html" target="_blank"> <span>Amiga 1200的开放硬件RTC模块</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/2253354/" target="_blank">杜喜喜</a> <div class="text-date">0.05 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_2425360_1_1.html" target="_blank"> <span>设置应用冷启动优化案例</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6333127/" target="_blank">jf_51331055</a> <div class="text-date">3天前</div> <div class="text-view">168 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2426142_1_1.html" target="_blank"> <span>【RTC程序设计:实时音视频权威指南】音频采集与预处理</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/6348333/" target="_blank">jf_48801345</a> <div class="text-date">11小时前</div> <div class="text-view">10 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2425924_1_1.html" target="_blank"> <span>现在用交流通过整流滤波稳压之后的电压(正负电压),直接给运放进行供电,实现不了。在PSPICE中仿真会报错。</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/4221105/" target="_blank">123456789789</a> <div class="text-date">1天前</div> <div class="text-view">94 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2425912_1_1.html" target="_blank"> <span>【Vision Board创客营连载体验】RA8D1 Vision Board 实现 FAL 同时调用片上以及外挂 Flash</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/4102342/" target="_blank">AokIvan</a> <div class="text-date">1天前</div> <div class="text-view">205 阅读</div> </div> </div> </li><li class="article-rec-item"> <div class="col-right"> <h4 class="text-title"> <a href="https://bbs.elecfans.com/jishu_2425888_1_1.html" target="_blank"> <span>【紫光同创盘古PGX-Lite 7K教程】——(盘古PGX-Lite 7K开发板/PGC7KD-6IMBG256第四章)​数码管动态显示实验例程</span> </a> </h4> <div class="text-content"> <a class="text-name" href="https://bbs.elecfans.com/user/354193/" target="_blank">yonglong11</a> <div class="text-date">1天前</div> <div class="text-view">244 阅读</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="808775"> <!-- $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" 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/help/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> <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 号</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 type="text/javascript" src="/static/vendor/layer/layer.js?20220927"></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编程下载和解析英文版维基百科'; var article_id = 808775; var article_user_id = 2788889;//文章作者ID var article_user_name = 'MqC7_CAAI_1981'; 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>