Python学习日记11|Scrapy入门时的几个坑

今天是5.16号。

看的课程里面关于Scrapy讲的内容直接用到了redis这个数据库,有了解到redis和mongodb一样是一种key-value数据库,不过mongodb是将数据放在硬盘中的,而redis是将数据库放在内存中的,所以读或者存储数据更快。

但目前对于scrapy好像还没有入门,所以还是先主要学习scrapy爬虫框架相关知识。从上周五开始就在学习scrapy,但真的是如其他人所说这里面坑真心多,今天终于有了一点进展,对这两天的知识进行总结。


一、Scrapy必须搭载python2.7使用!

刚开始自己用的python3.4版本,然后傻傻的照着找来的教程安装相关的库,写好简单的代码,结果运行就报错,发现有些库是不支持python3以上的版本的,只好又安装了2.7的版本。

二、关于scrapy的安装

(1).下面是所有要安装的库


1.png

有一点要注意,在pycharm的interpreter中安装库时,不要把下面所示的选项选中,不然会把库装到其他路径下。

2.png

(2).安装好上面这些库之后,由于scrapy不像以往的用单个py文件来可以运行,所以必须先创建一个工程,在PycharmProjects文件下,打开cmd输入如下命令:

scrapy startproject namexx

这样就建立好了相应的工程,里面自动生成好几个文件,各个文件具体什么功能可以自行查询。接着是去建立新的文件编写对应的代码,但由出现了各种其他的问题。

三、关于主要的文件中继承的类和对应的xpath的使用

上面的两个问题解决后,发现依然print不出自己想要的内容,然后发现编写代码时,有几个问题又出现了。

__author__ = 'guohuaiqi'
#!/usr/bin/env python
# _*_ coding: utf-8 _*_


# from scrapy.spider import BaseSpider
# class DoubanFilm(BaseSpider):

import scrapy
class DoubanFilm(scrapy.Spider):
    name = "tb"
    allowed_domains = ["baidu.com"]
    start_urls = ["http://tieba.baidu.com/p/4550405727"]

    def parse(self, response):
        item=response.xpath('//*[@id="j_core_title_wrap"]/div[2]/h1').extract()
        print item[0]
#可以由response.body得到返回网页的整体内容,response.url得到请求的url,
response.xpath('xx')获取相应的页面元素。

所有的代码写好后,在pycharm的console中运行如下命令即可:
scrapy crawl tb

(1)导入库的问题
自己对着极客学院里面scrapy的教程往上码好代码,结果发现有的教程导入的是BaseSpider,有的是Crawlspider,有的直接就是scrapy。到后来改来改去,才发现好像scrapy和BaseSpider是一样的,而Crawlspider则要在后面配合rule使用。

(2)继承类的问题
如上面的例子所示,scrapy和BaseSpider的用法其实是差不多的,然后自己就以导入scrapy进行了后续的过程。当然是如果使用Crawlspider也是可以的,但自己没有学会它与rule配合使用的用法,所以会在后面继续学习。但是建议如果是初学者还是直接用scrapy简便一点。

同时在定义类时,必须要有的几个关键字不能少:
a).name,在写完代码后,运行爬虫时需要用到;
b).allowed_domains ,一般就是网站域名出去www后的字符,有时候不加上这条语句会显示不了,但有时又正常,所以还是带上的好;
c).start_urls ,用于说明爬虫的起始入口;

在定义完属性后,然后必须定义一个名为parse(self,response)的函数,接着根据自己的功能需求去编写。

(3)Xpath的使用的问题
上面所有的问题都解决后,怎样提取到网页中对应的元素或者属性,必须要了解XPath的用法,否则仍然不会显示任何内容。自己最初想试试能不能在里面有besutifulsoup的方法去获取想要的内容,但发现几乎没有将besutifulsoup与scrapy相结合应用来获取元素的文章,也可能是自己没有找到。所以在学习scrapy前一定要先了解一下xpath的相关知识。

(4)其他问题
a).用python3及以上版本print时,中文会正常显示,而2中则会显示为unicode字符;
b)有些网站能用besutifulsoup的select来直接获取元素,但是用xpath居然会显示403错误,也是醉了。


附上利用XPath定位到网页中指定元素的方法,与besutifulsoup的方法想类似。

XPath相关知识1.png

XPath相关知识2.png
XPath相关知识3.png
XPath相关知识4.png
XPath相关知识5.png

(有关xpath深入了解的文章,在简书上看到了一篇觉得好不错,附上链接:http://www.jianshu.com/p/89c10770d72c

不知道什么时候能够学完scrapy的相关知识,但是真心觉得好累,等学完scrapy自己就要开始考虑读博,以及去研究老师前天发给自己的博士论文了。

anyway,加油!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容