本文信息本文由方法SEO顾问发表于2015-11-1814:36:03,共 3373 字,转载请注明:【张亚楠】Python在我SEO工作中的应用(1)_【方法SEO顾问】,如果我网站的文章对你有所帮助的话,来百度口碑给个好评呗!

1. 本系列前言

一直想写

本系列暂时计划分为几个主题,将在近几周完成:数据采集

关键词拓展

数据系统

工具篇

适用人群:具有Python基础的SEOer(没有Python基础的直接往下拉,看推荐的Python教程)。

2. SEO与数据采集

SEO工作离不开数据采集。获取某个频道所有URL,查询一批网页的收录/排名情况,采集竞争对手的特定数据,都需要用到数据采集。

特别是对个人站长来说,只有通过数据采集才能获得大量数据,并生成网页。

3. 原始爬虫

最原始的爬虫爬虫可以只是发送一个HTTP请求,并获取返回的响应数据,使用Requests三行就可以写出一个简单的爬虫,代码如下:import requests r = requests.get('http://www.zhidaow.com') print r.content

注:关于Requests的入门教程可以看我这篇文章;

除了Requests,还可以使用python标准库urllib,urllib2。

4. 高级爬虫

给原始爬虫升级几个技能就可以投入使用了,我经常升级以下几个功能。

4.1 获取特定字段: BeautifulSoup+Requests

BeautifulSoup可以将HTML解析为DOM树,然后获取特定字段。关于BeautifulSoup的详细内容可以看这篇文章,这里只举一个简单的例子。

以下是途牛某游玩页面的部分代码

玉渊潭樱花节

地      址:

游玩时间:预计4小时

可以通过..这个特征来获取4小时这个字段:import requests from bs4 import BeautifulSoup as bs url = 'http://www.tuniu.com/play/9232/' r = requests.get(url) soup = bs(r.content) print soup.find('b', class_='c_f80').string #输出字段有空格,可以通过strip()函数来过滤多余的空格和换行

4.2 使用代理

为避免屏蔽,抓取时通常需要代理,使用Requests的proxies参数可以实现这个效果。接上面代码:proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } r = requests.get(url, proxies=proxies)

如果代理需要账户和密码,则需这样:proxies = { "http": "http://user:pass@10.10.1.10:3128/", }

4.3 模拟百度蜘蛛

抓取时模拟搜索引擎蜘蛛是个好主意,这里就以User-Agent试图模仿百度蜘蛛去抓取:headers = { 'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)', } r = requests.get(url, headers=headers)

4.4 多线程抓取

为了提高抓取速度,一般都会采用多线程的方式去抓取,我在这篇文章中采用了第三方库threadpool的形式实现了多线程。在这里我采用另外一种形式,用标准库multiprocessing来实现:import requests from bs4 import BeautifulSoup as bs from multiprocessing.dummy import Pool as ThreadPool #URL列表 urls = [ 'http://www.tuniu.com/play/9232/', 'http://www.tuniu.com/play/9231/', 'http://www.tuniu.com/play/9237/', 'http://www.tuniu.com/play/9234/', # etc.. ] #提取字段函数 def get_play_time(url): r = requests.get(url) soup = bs(r.content) print soup.find('b', class_='c_f80').string.strip() #设置线程数 pool = ThreadPool(4) #开启多线程 results = pool.map(get_play_time, urls) #关闭线程并等待结束 pool.close() pool.join()

注:这个多线程的实现主要参考了这篇文章。

4.5 requests+正则

有时候如果所需字段出现在JS等DOM树之外,可以直接使用正则的方式获取,有时候速度反而会更快一点。

4.6 抓取网页JS内容

很多网站会将重点内容放在JS中,增加了抓取的难度。这种可以通过Selenium+PhantomJS+Xpath的方式抓取。

5. 终极爬虫

终极爬虫就属Scrapy了。Scrapy可以理解为搜索引擎爬虫的雏形,可以沿着初始URL列表进行抓取,并且可以设置抓取深度,抓取字段,抓取URL,抓取频率等等。

另外,还可以加入随机代理,随机UA,分布式抓取,入库等高级功能,并且还可以与selenium结合对JS生成的元素进行抓取。很多比价网站都是用Scrapy做商城爬虫,Scrapy也是爬虫工程师的必备技能之一。我对官方教程里的基础示例做了修改,示范下基础爬虫的代码:import scrapy class TuniuSpider(scrapy.Spider): name = 'tuniu' # 设置爬虫名称,这里没卵用 start_urls = ['http://www.tuniu.com/guide/d-beijing-200/jingdian/'] # 设置初始抓取链接 def parse(self, response): for href in response.css('.mgl_pic a::attr(href)'): # 用CSS提取链接,也可以用xpath,beautifulsoup提取 yield scrapy.Request(href.extract(), callback=self.parse_poi) # 提出的链接用parse_poi函数处理 def parse_poi(self, response): yield { 'name': response.css('h1 a::text').extract()[0], # 用CSS规则从网页中提取字段 'english': response.css('.english::text').extract()[0], }

之后就可以使用scrapy runspider tuniu_spider.py -o tuniu_poi.json进行抓取了。

推荐教程:

注:Scrapy依赖很多其他库,如lxml,Twist,所以安装起来会比较麻烦,之后可能会单独写一篇文章讲Scrapy。

6. Python教程推荐入门教程:笨方法学Python(练习中学习,很快有成就感)

基础学习:《Python核心编程》,或者其他系统讲解Python原理及标准库的书

进阶学习:《Python Cookbook》

熟读资料:Python文档

7. 备注Python只是抓取工具,火车头也是一款不错的抓取工具,我跟隔壁小伙伴培训就是讲的火车头采集,界面简单,容易上手;

题图为SEO的一生,版权在图片上。

python与seo应用_【张亚楠】Python在我SEO工作中的应用(1)相关推荐

  1. python网页编程测试_李亚涛:python编写友情链接检测工具

    原标题:李亚涛:python编写友情链接检测工具 友情链接是网站外链的非常重要的来源,作为一个网站运营推广人员,需要定期对网站的友链进行更新与检查,如果有人下掉你的链接,这样你可以及时的检测并清除掉. ...

  2. 合作共赢位来_张亚超

    合作共赢位来_张亚超 为适应互联网发展需要,中国移动成立了位置.音乐.游戏等9大基地,并且向客户提供更加丰富优质的服务,合理利用资源,推动产业技术创新.只有位置基地是地处于北方的基地,立足辽宁,服务于 ...

  3. python中文件分类_李亚涛:python实现电脑文件一键分类

    原标题:李亚涛:python实现电脑文件一键分类 python还挺好玩的,可以做蛮多事情! 比如桌面非常非常多的文件,想要整理一下,也可以用到python 比如我就自己写了个程序,整理文件就是运行一下 ...

  4. python有没有帮助_没想到,python给我的帮助竟然这么大

    2012年,SEO行业分为两派--技术派和理论派,技术派认为应该深入理解搜索引擎工作原理,学会web开发,这样做SEO才能走得远;理论派则认为只要掌握理论,会不会编程无所谓.当时SEO人员纷纷站队,在 ...

  5. vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe

    1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...

  6. python自动化数据报告_如何:使用Python将实时数据自动化到您的网站

    python自动化数据报告 This tutorial will be helpful for people who have a website that hosts live data on a ...

  7. 小学生python编程写游戏_小学生开始学Python,开发AI的首选编程语言:推荐一波Python书单...

    AlphaGo 都在使用的 Python 语言,是最接近 AI 的编程语言. 教育部考试中心近日发布了"关于全国计算机等级(NCRE)体系调整"的通知,决定自2018年3月起,在全 ...

  8. python领域语言教案_第一单元 走进Python 编程世界

    (共17张PPT) 今年一场突如其来的新冠肺炎不仅使得人人带上了口罩,过了一个不一样的寒假,同时也使得我们以不一样的方式开启我们的学习. 同学们你们知道那些人容易得肺炎重症呢? 有基础病的 身体素质差 ...

  9. python代替易语言_基于hook的python机器人,彻底取代itchat

    本文档部分由itchat与wxpy的开发文档修改得出 禁止不规范转载 WechatBot WechatBot是一个半开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到20行的代码, ...

最新文章

  1. mysql-理想的索引
  2. 软件构造学习笔记-第十四周、十五周
  3. 牛客网【每日一题】3月26日 合并回文子串
  4. 学PHP的嫌弃什么歌,抖音再见了互相嫌弃的老同学是什么歌
  5. python中reshape_Numpy之reshape()使用详解
  6. 零知识证明应用到区块链中的技术挑战
  7. SQL Server死锁
  8. html让空间高度跟随父级,CSS子元素跟父元素的高度一致的实现方法
  9. linux(Ubuntu)常用命令整理 -- 基础篇 -- 持续更新
  10. 基础集合论 第一章 7 交集 8 差集
  11. 高速EDA设计课程报告(二)
  12. 电脑开机计算机配置,电脑开机显示配置更新怎么办
  13. 奇迹单机版服务器修改,大天使之剑奇迹网页游戏 一键服务端单机版/架设教程/修改方法...
  14. 计算机操作系统-整理
  15. win10防火墙_怎么关闭防火墙
  16. 微信公众平台模拟登录自动群发图文消息工具包
  17. Qt中多pro与多pri合作编程
  18. 苹果a10处理器_苹果“芯”基建简史:自己掌握不了核心技术 乔布斯也得干着急...
  19. 2023年【甘肃省安全员C证】考试题库及甘肃省安全员C证考试总结
  20. 中年大叔学雷达-TR组件

热门文章

  1. 利用Linux命令行进行文本按行去重并按重复次数排序yes
  2. Linux报错./configure: error: C compiler cc is not found
  3. Laravel的Class Laravel\Passport\Passport not found
  4. PHP的is_numeric is_int is_integer ctype_digit
  5. qtchart实时动态曲线_极致新体验,实时、无损、长时程细胞分析检测平台
  6. 怎么将arcgis新建工具条如何保存_ArcGIS中寻找最短路径的方法
  7. PHP实现页面跳转的几种方法
  8. springmvc执行流程(简述易懂)
  9. kvmweb管理工具_KVM web管理工具——WebVirtMgr
  10. 在线普通话转粤语发音_最快的学说粤语的办法:粤语拼音