作为SEO专业人士,我的日常工作也在学习。去年年底开始学习Python后,我发现自己越来越多地将所学知识付诸实践。这包括相当简单的任务,例如随时间比较字数或状态代码,以及分析作业,包括内部链接和日志文件分析。此外,Python也非常有用:用于处理通常会使Excel崩溃的文件的大型数据集,并且需要进行复杂的分析以提取任何有意义的见解。Python如何帮助技术SEOPython以多种方式为SEO专业人士提供支持自动化通常需要花费大量时间的重复性任务。这意味着我们有更多的时间(和精力)花在重要的战略工作和无法自动化的优化工作上。它还使我们能够更有效地处理大量数据,以便做出更多数据驱动的决策,从而为我们和客户的工作提供有价值的回报。事实上,数据公司的一项研究发现,数据驱动型组织获得客户的可能性是其他组织的23倍,留住这些客户的可能性是其他组织的6倍。它也非常适合支持您拥有的任何想法或策略,因为您可以使用您拥有的数据对其进行量化并据此做出决策,同时在尝试实现目标时也具有更大的影响力。将Python添加到您的SEO工作流程将Python添加到您的工作流程的最佳方法是:考虑可以自动化的内容,尤其是在执行繁琐的任务时。找出您正在或已经完成的分析工作中的任何差距。我发现另一种开始学习的有用方法是使用您已经可以访问的数据,并使用Python提取有价值的见解。这就是我学习本文要分享的大部分内容的方式。学习Python并不是成为一名优秀的SEO专家的必要条件,但如果您有兴趣了解更多有关Python如何帮助您做好准备的知识,则可以。您需要开始什么要从本文中获得最佳效果,您需要以下内容:来自网站的一些数据(例如,网站爬网、统计分析或搜索控制台数据)。用于运行代码的IDE(集成开发环境),对于入门,我推荐GoogleColab或JupyterNotebook。保持开放的心态。这也许是最重要的一点,不要害怕破坏某些东西或犯错误,找到问题的原因以及如何解决它是我们作为SEO专业人员所做工作的重要组成部分,因此请将同样的心态应用到学习中Python有助于缓解任何压力。1.充分利用网络上的现有资源。一个好的开始是尝试Python中可用的许多库中的一些。有许多库可供探索,但我发现对SEO相关任务最有用的三个库是Pandas、Requests和BeautifulSoup。PandasPandas是一个用于处理表格数据的Python库,它允许在关键数据结构是数据框的情况下进行高级数据操作。DataFrame本质上是Pandas中的Excel电子表格,但是,它不受Excel的行和字节限制,而且它比Excel快得多,因此效率更高。开始使用Pandas的最佳方法是获取一个简单的CSV数据,例如,从您的网站抓取中,并将其作为DataFrame保存在Python中。拥有此存储后,您可以执行许多不同的分析任务,包括聚合、旋转和清理数据。importpandasaspddf=pd.read_csv("/file_name/and_path")df.headrequests下一个库称为requests,用于在Python中发出HTTP请求。它使用不同的请求方法(如GET和POST)发出请求,结果存储在Python中。这方面的一个例子是一个简单的URLGET请求,它将打印出页面的状态代码,然后可以使用它来创建一个简单的决策函数。importrequests#PrintHTTPresponsefrompageresponse=requests.get('https://www.xxxxxxxx.com')print(response)#Createdecisionmakingfunctionifresponse.status_code==200:print('成功!')elifresponse.status_code==404:print('NotFound.')您还可以使用不同的请求,例如标头,它显示有关页面的有用信息,例如内容类型和响应应缓存多长时间的时间限制。#Printpageheaderresponseheaders=response.headersprint(headers)#Extractitemfromheaderresponseresponse.headers['Content-Type']还可以模拟特定的用户代理,例如Googlebot,以提取特定机器人在爬行时看到的响应这一页。headers={'User-Agent':'Mozilla/5.0(compatible;Googlebot/2.??1;+http://www.google.com/bot.html)'}ua_response=requests.get('https://www.xxxx.com/',headers=headers)print(ua_response)BeautifulSoup最后一个库叫做BeautifulSoup,用来提取HTML和XML文件。它最常用于网络抓取,因为它可以将HTML文档转换为不同的Python对象。例如,您可以使用一个URL并使用beautifulsoup和Requests库来提取页面的标题。#BeautifulSoupfrombs4importBeautifulSoupimportrequests#RequestURLtoextractelementsfromurl='https://www.xxxxxxxxx.com/knowledge/technical-seo-library/'req=requests.get(url)soup=BeautifulSoup(req.text,"html.parser")#Printtitlefromwebpagetitle=soup.titleprint(title)此外,BeautifulSoup允许您从页面中提取其他元素,例如页面上找到的所有href链接。forlinkinsoup.find_all('a'):print(link.get('href'))2.切分第一个任务是对网站的页面进行切分,实际上是根据页面的URL结构或者Pagetitles分组页面按类别。首先,使用一个简单的正则表达式根据URL将网站分成不同的段:segment_definitions=[[(r'\/blog\/'),'Blog'],[(r'\/technical-seo-library\/'),'TechnicalSEOLibrary'],[(r'\/hangout-library\/'),'HangoutLibrary'],[(r'\/guides\/'),'Guides']]接下来,我们add一个小函数,它将遍历URL列表并为每个URL分配一个类别,然后将这些段添加到包含原始URL列表的DataFrame中的新列。use_segment_definitions=Truedefsegment(url):ifuse_segment_definitions==True:forsegment_definitioninsegment_definitions:ifre.findall(segment_definition[0],url):returnssegment_definition[1]return'Other'df['segment']=df['url'].apply(lambdax:get_segment(x))也是一种使用URL结构对页面进行分段而无需手动创建分段的方法。这将获取包含在主域后面的文件夹,以便对每个URL进行分类。同样,这将向我们的DataFrame添加一个新列,其中包含结果段。defget_segment(url):slug=re.search(r'https?:\/\/.*?\//?([^\/]*)\/',url)ifslug:returnslug.group(1)else:return'None'#Addasegmentcolumn,andmakeintoacategorydf['segment']=df['url'].apply(lambdax:get_segment(x))3.重定向依赖从来没有想过完成这个任务。迁移后,当重定向到位时,我们想通过查看每个页面的类别和深度是否发生变化或保持不变来确定重定向映射是否准确。如上所述,这涉及在迁移前后抓取网站并根据其URL结构对每个页面进行分段。这样做之后,我使用了一些简单的比较运算符(内置于Python中)来确定每个URL的类别和深度是否发生了变化。df['category_match']=df['old_category']==(df['redirected_category'])df['segment_match']=df['old_segment']==(df['redirected_segment'])df['depth_match']=df['old_count']==(df['redirected_count'])df['depth_difference']=df['old_count']-(df['redirected_count'])因为这本质上是一个自动化脚本,它将遍历每个URL以确定类别或深度是否已更改,并将结果输出为新的数据框。新的DataFrame将包含额外的列,如果匹配则返回True,否则返回False。就像在Excel中一样,Pandas库使您能够根据原始数据框的索引对数据进行透视。例如,获取迁移后有多少个URL具有匹配的类别。通过此分析,您可以查看已设置的重定向规则,并确定迁移前后是否存在任何可能需要进一步调查的明显不同的类别。4.内部链接分析分析内部链接对于确定站点的哪些部分链接最多以及确定改进站点内部链接的机会非常重要。为了执行此分析,我们只需要来自网络抓取的一些数据列,例如,显示页面之间链接的任何度量。同样,我们希望对这些数据进行细分,以便识别不同类别的网站并分析它们之间的链接。internal_linking_pivot['followed_links_in_count']=(internal_linking_pivot['followed_links_in_count']).apply('{:.1f}'.format)internal_linking_pivot['links_in_count']=(internal_linking_pivot2['links_in_count']).apply('{:.1f}'.format)internal_linking_pivot['links_out_count']=(internal_linking_pivot['links_out_count']).apply('{:.1f}'.format)internal_linking_pivot数据透视表对于这种分析非常有用,因为我们可以对类别进行数据透视,以计算每个类别的内部链接总数。Python还允许我们执行数学函数,以获得我们拥有的任何数值数据的计数、总和或平均值。5.日志文件分析另一个重要的分析与日志文件有关,我们可以在许多不同的工具中收集这些数据。您可以提取一些有用的见解,包括确定您网站的哪些区域被Googlebot抓取最多,以及监控请求数量如何随时间变化。此外,它们还可用于查看有多少不可索引或损坏的页面仍在接收机器人点击,以解决任何潜在的爬行预算问题。对于每个类别,最容易使用的是按段计算URL,或者按段计算。如果您有权访问历史日志文件数据,还可以监控Google对您网站的访问变化。Python中也有很好的可视化库,例如Matplotlib和Seaborn,它们允许您创建条形图或折线图,将原始数据绘制成易于理解的图表,显示随时间的比较或趋势。6.数据合并使用Pandas库,还可以根据URL等共享列合并数据框。一些有用的SEO合并示例包括将来自网络抓取的数据与GoogleAnalytics中收集的转换数据相结合。这将与每个URL匹配,并在一个表中显示来自两个来源的数据。以这种方式组合数据有助于更深入地了解表现最佳的页面,同时还可以识别未按预期表现的页面。合并类型在Python中有两种不同的合并数据的方法,默认方法是内部合并,合并将发生在左右数据框中的值上。但是,您也可以进行外部合并,这将返回左侧数据框中的所有行和右侧数据框中的所有行,尽可能匹配它们。右合并或左合并将合并所有匹配的行,并保留不匹配的行(如果分别出现在右合并或左合并中)。7.GoogleTrends还有一个很棒的库叫做PyTrends,它实际上允许你使用Python扩展GoogleTrends数据。有多种API方法可用于提取不同类型的数据。一个示例是一次跟踪最多5个关键字的搜索兴趣。另一个有用的方法是返回关于某个主题的相关查询,这将显示0-100之间的Google趋势分数,以及一个百分比,显示随着时间的推移对该关键字的兴趣增加了多少。这些数据可以很容易地添加到Google表格文档中,以便在GoogleDataStudio仪表板中显示。这些项目一起帮助我节省了大量手动分析工作的时间,同时也让我能够从我接触的所有数据中发现更多见解。我希望这能给你一些SEO项目的灵感,你可以开始学习Python。
