zoukankan      html  css  js  c++  java
  • scrapy实战--登陆人人网爬取个人信息

    今天把scrapy的文档研究了一下,感觉有点手痒,就写点东西留点念想吧,也做为备忘录。随意写写,看到的朋友觉得不好,不要喷我哈。

    创建scrapy工程

    cd C:Spider_devappscrapyprojects
    scrapy startproject renren
    

    创建定向爬虫

    cd renren
    scrapy genspider Person renren.com
    

    查看目录结构

    定义items

    class RenrenItem(scrapy.Item):
        # define the fields for your item here like:
        # name = scrapy.Field()
        sex = scrapy.Field()  # 性别
        birthday = scrapy.Field()  # 生日
        addr = scrapy.Field()  # 家乡
    

     编写爬虫

    # -*- coding: gbk -*-
    import scrapy
    
    # 导入items中的数据项定义模块
    from renren.items import RenrenItem
    
    class PersonSpider(scrapy.Spider):
        name = "Person"
        allowed_domains = ['renren.com']
        start_urls = ['http://www.renren.com/913043576/profile?v=info_timeline']
    
        def start_requests(self):
            return [scrapy.FormRequest('http://www.renren.com/PLogin.do',
                                       formdata={'email':'15201417639','password':'kongzhagen.com'},
                                       callback=self.login)]
    
        def login(self,response):
            for url in self.start_urls:
                yield self.make_requests_from_url(url)
    
        def parse(self, response):
            item = RenrenItem()
            basicInfo = response.xpath('//div[@id="basicInfo"]')
            sex = basicInfo.xpath('div[2]/dl[1]/dd/text()').extract()[0]
            birthday = basicInfo.xpath('div[2]/dl[2]/dd/a/text()').extract()
            birthday = ''.join(birthday)
            addr = basicInfo.xpath('div[2]/dl[3]/dd/text()').extract()[0]
            item['sex'] = sex
            item['addr'] = addr
            item['birthday'] =birthday
            return  item
    

     解释:

      allowed_domains:定义允许访问的域名

      start_urls:登陆人人网后访问的URL

      start_requests:程序的开始函数,FormRequest定义了scrapy如何post提交数据,返回函数或迭代器,回调函数login。

      login:登陆人人网之后的爬虫处理函数,make_requests_from_url处理start_urls中的url,其默认的回调函数为parse

      parse:处理make_requests_from_url函数返回的结果

    执行爬虫

    scrapy crawl Person -o person.csv
    

    查看结果:

      

  • 相关阅读:
    软件工程2019实践第一次作业
    Maven环境的搭建
    TomCat控制台中文乱码及IDEA设置为UTF-8
    将win10永久激活为专业工作站版(图文详细教程)
    [软件技巧]manjaro gnome中修改屏幕缩放比例
    第一次个人编程作业
    百度的TTS API
    第一次软件工程实践作业
    MySQL触发器的操作
    Anaconda使用conda activate激活环境报错Your shell has not been properly configured to use 'conda activate'.
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/6515626.html
Copyright © 2011-2022 走看看