python
PC
作者:brooks
公众号:布鲁的python
1. 当我们要了解一批关键词的操作手法的时候,最简单的方法就是学习一下那些排名好的竞争对手的操作方
法。然后去模仿他们的做法,那么我们就需要拿这批关键词去百度进行搜索,然后提取出排名前面的竞争对
手的网址。
2. 当我们想了解一下自有网站在某些关键词的排名情况的时候,也是需要一个个关键词的去进行查询,然后提
取出自己网站的排名和对应的地址。
以上的两种情况都需要我们对搜索结果的数据进行结构化的提取,如果是数据量很小的时候,可能我们还可以人工
的搜一下,但是当我们需要检查几万,十几万,甚至是几十上百万的关键词的时候,那么一个自动化的工具就是我
们迫切需要的。
下面的教程就是教大家怎么用python来自己造一个这样的工具出来。
1
因为是爬虫入门课程,所以需要到的都是python的基础知识。需要了解Python的基础数据类型、函数式编程的知
识以及python的错误处理机制和一些多线程的 基础(课程也会讲到)。
非Python的知识点主要有正则表达式的基础、HTML(div+css)基础知识。
2
python
网页下载模块:urllib2,requests(后期重构代码时添加的,安装方法:pip install requests)
正则表达式模块:re (提取网页数据)
链接解析模块:urlparse
多线程模块:threading (速度快不快就靠它了)
限制请求速度:time (避免被封)
3
IDE
ipython notebook:用于测试代码和模块用法查询等
安装方法:(Windows系统最好安装64位的python,基于python2.7.x)
pip install jupyter
pycharm:用于编写完整项目
破解网址:http://idea.lanyus.com/
用
实
现
百
度
端
关
键
词
覆
盖
率
的
查
询
一
、
概
述
二
、
知
识
点
及
所
需
模
块
、
所
需
知
识
点
梳
理
、
所
用
到
的
模
块
:
、
用
到
的
三
、
程
序
结
构
覆盖率查询最终需要的数据:
每个站点的url及其url出现的次数
示例:{'www.baidu.com': 100, 'www.brooks.com': 106}
结果保存:以字典(dict)的方式进行保存统计
最终输出保存为txt文件
关键词排名查询最终需要数据
关键词及其对应的url以及排名位置,url可能存在多个,因此会以数组的方式存放
如果查询不到那么, 则url位置为空即可
示例:{'seo': [{'http://www.brooks.com/': 1}, {'http://www.brooks.com/seo/1.html': 9}], 'seo教程':
[{'http://www.brooks.com/seo/': 5}]}
最终结果保存为txt文件
基于上述的分析,以及为了降低程序的耦合度,实现更容易实现程序的扩展考虑,我们需要将每个功能模块给进行
独立的封装:
1. 百度serp源码下载函数(downloader): 主要实现提供一个关键词,然后下载百度的源代码并返回。对于下载失
败的,可以进行给定次数的重新下载。
2. 覆盖率查询的百度serp结果提取函数(coverParser): 主要是提取百度搜索结果的网站排名加密地址
3. 百度加密地址解析函数(secUrlParser): 主要对百度的加密地址还原为真实的网站地址并提取出域名部分
4. 覆盖率结果统计函数(coverCounter): 对所有的域名进行次数统计
5. 多线程处理函数(thread_process): 主要用于集成整个处理流程,然后通过多线程来调用
6. 多线程调度函数(dispatcher): 加快爬虫的抓取效率
7. 结果输出及排序函数(output): 先对结果进行倒序排序后输出到txt文件