专栏首页Rude3Knife的后端开发专栏【python爬虫】scrapy框架笔记(一):创建工程,使用scrapy shell,xpath

【python爬虫】scrapy框架笔记(一):创建工程,使用scrapy shell,xpath

scrapy是个好东西,它的官方文档写的很详细,很适合入门。链接:http://scrapy-chs.readthedocs.io/zh_CN/1.0/index.html

记录点东西免得以后自己忘记。网上scrapy教程一搜一大把,只记录一些认为比较重要的学习思路。有什么技术问题欢迎留言评论!

1. 创建工程注意事项

框架结构和django蛮像的,一眼就能看个大概。其中setting.py在之后的用处很大,LOG_LEVEL并没有默认写在里面,默认是LOG_LEVEL= ‘DEBUG’, 每次运行爬虫输出很多信息,一开始很有用,毕竟还不熟悉,到了后来,每次都输出抓取到的list显得太繁琐了,可以改成LOG_LEVEL= ‘INFO‘, ’WARNING‘ ’ERROR‘,我现在一般放在INFO

以下几个在一开始学习时可以先设置为以下设置

DOWNLOAD_DELAY = 5(防封,一般2就足够)

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'(防封)

COOKIES_ENABLED = False(防封)

2.scrapy shell

对于我来说,shell最大的用处是测试xpath和re是否抓对,其他功能还没怎么接触。

在终端里输入:scrapy shell "www.baidu.com"  (不带引号也可以,但对一些特殊符号的网址最好带引号,不然会出错)

运行后的一些指令:

response.body: 查看网页整个源代码

response.xpath: 用xpath找出符合的list

respose.xpath().re(): xpath后混合re(复杂的网页用得比较多)

在scrapy shell中确定好匹配式方便之后直接码代码。

3.xpath

详细教程可以看: http://www.w3school.com.cn/xpath/index.asp

用xpath有偷懒办法,就是用类似chrome的浏览器开发者工具(很多其他浏览器基本都有,搜狗等),在待抓取网页按F12,或者直接选取想提取的文字,右键审查元素。

如上网页抓出来后(千里之外)是://*[@id="blog_rank"]/li[4]/span

其实这样的li[4]不太好,最好使用其它标签属性抓取,不然有时候网页的显示顺序变化后,比如有时候缺少一个标签(豆瓣电影就这样,都是泪)这样的依靠位置抓取很不靠谱。所以尽量找别的属性抓,例如可以靠“排名:”正则匹配一下。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Nginx 主动监测模块 upstream check 误用导致的502--no live upsteams

    nginx出现502 Bad GateWay的原因大部分情况下应该都不是Nginx的问题,而是后端Server的问题,比如程序挂了,比如响应太慢了。不过有时问题...

    the5fire
  • 为什么需要 reload(sys) 后设置编码--python 中的 site.py 模块

    在刚开始写python程序的时候,都会遇到一个很头疼的问题——编码错误,在之前的文章中也做了介绍: 由future中unicode_literals引起的错误来...

    the5fire
  • 无痛使用 Django+xAdmin+MongoDB

    前几天开始自己在做些日志的分析的小玩具,要分析手搜的用户访问情况,工具很简单,处理逻辑也很简单——从kafka拿nginx日志,然后处理完保存的数据库中,然后以...

    the5fire
  • 用 Python 爬取豆瓣上的图片

    最近在极客时间上学习数据分析的内容,刚好老师在课程上讲了爬虫的内容,而且是爬取豆瓣上的图片,把老师给的代码稍微修改了一下,再加上了我的理解和说明。

    伪君子
  • Python 中的闭包

    上面提到了两个关键的地方: 自由变量 和 函数, 这两个关键稍后再说。还是得在赘述下“闭包”的意思,望文知意,可以形象的把它理解为一个封闭的包裹,这个包裹就是一...

    the5fire
  • 用 Descriptor 来实现类级属性(Property)

    上篇文章简单介绍了python中描述器(Descriptor)的概念和使用,有心的同学估计已经Get√了该技能。本篇文章通过一个Descriptor的使用场景再...

    the5fire
  • 无题

    1 月 9 号张小龙在微信之夜上演讲了近 4 个小时,第二天就一堆文字稿出现了,接着是下面这一张图被大量转发

    伪君子
  • Emlog侧边栏添加微博组件

    直接进入这个地址 http://app.weibo.com/tool/weiboshow

    陌涛
  • 用 Python 爬取豆瓣电影海报

    之前写过一篇用 Python 爬取豆瓣上的图片,那今天就来写一下爬取豆瓣上的电影海报,算是姐妹篇。

    伪君子
  • 安装并配置 CouchDB

    之前写过用 Web Scraper 爬取即刻关注/被关注列表,爬取下来的数没按照顺序排序。有解决的办法,去安装 CouchDB,然后设置一下从此 Web Scr...

    伪君子

扫码关注云+社区

领取腾讯云代金券