Python爬虫第九天:crawl spider|日志|代理|数据存储

内容简述:         

    一:Crawl Spider         

    二:日志         

    三:Request和Response总结

    四:代理

    五:Scrapy实现模拟登录

    六:数据存储到数据库mysql中

一:crawl spider

     CrawlSpider是一个类,父类是scrapy.Spider。

    CrawlSpider不仅有Spider的功能,还有自己独特功能

特有功能:CrawlSpider可以定义规则,解析html时可根据链接规则提取出指定链接,然后再向这些链接发送请求。

通常用于:如果有需要跟进链接的需求,爬取网页之后,需要提取链接再次爬取。

如何提取链接?

        链接提取器,在这里就可以写规则提取指定链接

        scrapy.linkextractors.LinkExtractor(

           allow = (),   #正则表达式         提取符合正则的链接

           deny = (),     # (不用)正则表达式  不提取符合正则的链接

           allow_domains = (),  #(不用)允许的域名

           deny_domains = (),   #(不用)不允许的域名

           restrict_xpaths = (), # xpath,提取符合xpath规则的链接

           retrict_css = () #提取符合选择器规则的链接)

案例】:电影天堂-提取所有页码链接

scrapy shellhttp://www.dytt8.net/html/gndy/dyzz/index.html

                    from scrapy.linkextractorsimport LinkExtractor

正则用法

                    links1 = LinkExtractor(allow='list_23_\d+\.html')

                   links1.extract_links(response) 查看提取到的所有链接

  xpath用法

                    links2 =LinkExtractor(restrict_xpaths='//div[@class="x"]')

                   【注意】这里的xpath不带a

      css用法

                  links3 = LinkExtractor(restrict_css='.x')【注意】这里的选择器不带a

案例】:读书网-散文随笔

https://www.dushu.com/book/1163.html

                  scrapy startproject readbook1

scrapy genspider -t crawl readbookwww.dushu.com

crawlspider运行原理:

【实操-spiders注意说明】

        rules =(Rule(LinkExtractor(allow=r'/book/1163_\d+\.html'), callback='parse_item',follow=False),)

       【注1】callback只能写函数名字符串, callback='parse_item'

       【注2】在基本的spider中,如果重新发送请求,那里的callback写的是   callback=self.parse_item

二:日志信息和日志等级

      级别:

        CRITICAL:严重错误

        ERROR:一般错误

        WARNING:警告

        INFO:一般信息

        DEBUG:调试信息

        默认的级别为DEBUG,会显示上面所有的信息

        在配置文件中 settings.py设置

LOG_LEVEL:设置日志显示等级,此举动决定了显示哪些,不显示哪些

LOG_FILE:将屏幕显示的信息记录到文件中,屏幕不再显示

三:Request和response总结

      Request(类)

get请求

scrapy.Request(url=url,callback=self.parse_item,meta={'item':item},headers=headers)

        url:要请求的地址

        callback:响应成功之后的回调函数

        meta:参数传递

        headers:定制头信息,一般不用

      response(对象)

        response.text:字符串格式文本

        response.body:二进制格式文本

        response.url:当前响应的url地址

        response.status:状态码

        response.xpath():筛选想要的数据

        response.css(): 筛选想要的数据

post请求

      【温馨提示】

如果直接发送post请求,start_urls和parse方法就用不到

因为重写了start_requests(self)这个方法,

案例】:百度翻译

      scrapy.FormRequest(url=url,headers=headers, callback=self.parse_item

, formdata=data)

        url:要发送的post地址

        headers:定制头信息

        callback:回调函数

        formdata: post所携带的数据【字典】

四:代理

      通过下载中间件来进行添加

      (1)到settings.py中,打开一个选项

           DOWNLOADER_MIDDLEWARES配置选项

      (2)到middlewares.py中找到以下方法写代码

       defprocess_request(self, request, spider):

         request.meta['proxy'] ='https://113.68.202.99:8888'

          return None

五:scrapy实现模拟登录

   【案例】豆瓣-douban

https://accounts.douban.com/login

      【温馨提示】

            Douban基于安全考虑-比较靠谱的网站,登录时需携带Cookie。

所以需要首先向登录地址发送get请求,然后再向post地址发送post请求,因为中间要携带cookie,才能登录成功

            请求模式【get==>post==>get】

六:存储到mysql中

   【案例】-读书项目

           from scrapy.utils.project importget_project_settings

           settings = get_project_settings()

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