百度网页关键字抓取(如何利用Python编程,让SEO工作变的更高效? )

优采云 发布时间: 2021-11-26 15:11

  百度网页关键字抓取(如何利用Python编程,让SEO工作变的更高效?

)

  免责声明:我是一个编程菜鸟。为了强迫自己在实战中学习Python,我答应朋友制作一套视频课程,讲解如何使用Python编程让SEO工作更高效。

  和朋友讨论,初步定义了几个SEO工具的需求,打算用Python来实现:

  1、指定规则,扫描并导出所有有效的URL网站

  2、 批量抓取页面标题判断SERP前三页是否存在(判断索引)

  3、批量搜索关键词前N页的所有搜索结果,并导出标题和URL(用于查找外部资源)

  4、 批量抓取页面标题,判断标题在当前搜索引擎中的相似度(判断标题是否可用)

  5、 指定第一个词汇,抓取搜索引擎相关搜索,用结果词导出结果词的相关搜索词,导出,重复N次。(关键词 库,提高页面相关性的内部链接)

  6、 服务器日志批量处理,通过PY实现,日志批量筛选和有效导出。

  7、 通过非法词列表扫描指定页面是否有非法词。

  ...

  我希望依靠这些例子来编程,让大家得到python可以帮助我解决实际问题的印象,并通过简单的修改在实际工作中使用它们。

  如果你从 hello world 开始,大多数人在看不到希望的时候就会放弃。(我经历过很多次,有很深的体会)

  在学习中,有时“急功近利”是好事。

  -------------------

  本次以第五项需求为例,完成一段已实现的python代码,主要目的是抓取百度相关搜索词。

  为了满足实际应用,本要求进行了扩展:

  A. 支持输入多词扩展百度相关搜索词。

  B. 您可以指定哪些词必须或不能收录在要求中。

  C、可以将采集收到的文字保存为txt文件,文件名可以自定义。

  未来可以进一步改进的工作:

  1、多线程采集

  2、使用代理IP采集

  3、更多容错判断

  下面是具体代码,为了便于理解,几乎每一行都有注释,不要太啰嗦。(有些说法可能有误)

  # coding = utf-8

'''

1、指定关键词,抓取搜索引擎相关搜索词,并使用结果词再次抓取其相关搜索词。

2、采集时对搜索相关词做处理,必须包含某些关键词或不能包含的词才作为有效词。

3、指定希望获得的最终相关词数量。

获得的搜索相关词用途:增加关键词库,提升内部链接相关性,分析用户的搜索行为,广告投放等等。

'''

#导入http请求库request

import requests

#导入随机数库

import random

#导入时间库

import time

#导入日期库

import datetime

# 导入URL解析库

from urllib import parse

# 导入BeautifulSoup库,使用别名bs

from bs4 import BeautifulSoup as bs

# 定义获取相关词的函数,@words是希望拓展的词根列表,@num是希望获取的相关词数量(大概)

def get_related_words(words, num=10):

for word in words:

# 当已有词数量小于希望获取的词数时

if(len(words) =0):

continue

# 如果没有包含不允许的词,则进入下面的处理过程

else:

# 如果定义了必须包含的词

if must_contain is not None:

# 循环必须包含的词

for w in must_contain:

# 把w都转换为小写字符,因为百度搜索相关词中英文都是小写,之后查询是否包含必须有的词(>=0表示至少包含一次)

if i.find(w.lower())>=0:

rs.append(i)

# 如果没有定义必须包含的词,则所有词直接加入列表中。

else:

rs.append(i)

# 如果没有定义不能包含的词

else:

# 解释同上

if must_contain is not None:

for w in must_contain:

if i.find(w.lower())>=0:

rs.append(i)

else:

rs.append(i)

# 返回最终过滤后的词列表

return rs

# 打算拓展的词根

root_words = ['QQ', '腾讯']

# 根据词根进行相关词采集,指定最终采集词量

words = get_related_words(root_words, 30)

# 定义必须包含的关键词列表

must_contain = ['大全']

# 定义不能包含的关键词列表

should_not_contain = ['手游']

# 输出不加任何过滤规则获得的相关搜索词

rule1 = filter_words(words)

print("不加任何过滤规则获得的相关搜索词")

print_list(rule1)

rule2 = filter_words(words, must_contain)

print("指定必须包含的关键词后获得的相关搜索词")

print_list(rule2)

rule3 = filter_words(words, must_contain, should_not_contain)

print("指定必须包含的关键词和不能包含的关键词后获得的相关搜索词")

print_list(rule3)

# 把不同过滤规则处理后获得的词写入指定的文件中

save_to_file(rule1, 'all_words')

save_to_file(rule2, 'must_contain_words')

save_to_file(rule3, 'filter_words')

# 不做过滤处理,也不指定文件名,按程序启动时间作为文件名保存结果。

save_to_file(words)

# 输出实际获得的总词数

print("总共词数:{0}".format(len(rule1)))

print("必须包含指定词数量:{0}".format(len(rule2)))

print("最严过滤规则词:{0}".format(len(rule3)))

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线