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

创建scrapy工程

cd C:\Spider_dev\app\scrapyprojects
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

查看结果:

  

scrapy实战--登陆人人网爬取个人信息的更多相关文章

  1. 运用cookie登陆人人网爬取数据

    浏览器访问WEB服务器的过程 在用户访问网页时,不论是通过URL输入域名或IP,还是点击链接,浏览器向WEB服务器发出了一个HTTP请求(Http Request),WEB服务器接收到客户端浏览器的请 ...

  2. scrapy实战1分布式爬取有缘网(6.22接口已挂):

    直接上代码: items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See docu ...

  3. scrapy实战2分布式爬取lagou招聘(加入了免费的User-Agent随机动态获取库 fake-useragent 使用方法查看:https://github.com/hellysmile/fake-useragent)

    items.py # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentati ...

  4. Python爬虫实战三之爬取嗅事百科段子

    一.前言 俗话说,上班时间是公司的,下班了时间才是自己的.搞点事情,写个爬虫程序,每天定期爬取点段子,看着自己爬的段子,也是一种乐趣. 二.Python爬取嗅事百科段子 1.确定爬取的目标网页 首先我 ...

  5. 爬虫系列---scrapy全栈数据爬取框架(Crawlspider)

    一 简介 crawlspider 是Spider的一个子类,除了继承spider的功能特性外,还派生了自己更加强大的功能. LinkExtractors链接提取器,Rule规则解析器. 二 强大的链接 ...

  6. Scrapy爬虫框架之爬取校花网图片

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  7. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  8. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  9. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

随机推荐

  1. Eclipse删除switch workspace下多余的workspace

    第一步:修改org.eclipse.ui.ide.prefs 文件 打开Eclipse目录的\configuration\.settings目录,找到org.eclipse.ui.ide.prefs ...

  2. Gradle-5.3:依赖-管理依赖的版本(传递(transitive)\排除(exclude)\强制(force)\动态版本(+))

    什么是传递依赖 在Maven仓库中,构件通过POM(一种XML文件)来描述相关信息以及传递性依赖.Gradle 可以通过分析该文件获取获取所以依赖以及依赖的依赖和依赖的依赖的依赖,为了更加直观的表述, ...

  3. 图解-安卓中调用OpenGL

    游戏开发中经常使用到OpenGL,当然很多人都喜欢直接用现有的游戏引擎,但相信了解的更多对你没有坏处 安卓开发中,采用的OpenGL ex2的规范,前几天看了下这个规范,整体上难度比1.0规范难度加大 ...

  4. AndroidStudio报错Software caused connection abort: recv failed

    Software caused connection abort: recv failed 这个问题网上有一种说法 已知会导致这种异常的一个场景如下: 客户端和服务端建立tcp的短连接,每次客户端发送 ...

  5. CFLAGS CPPFLAGS CPPFLAGS 区别

    CPPFLAGSC预处理器参数.( C 和 Fortran 编译器也会用到). CXXFLAGSC++语言编译器参数. CFLAGSC语言编译器参数.

  6. 解决Code First因_migrationHistory表与代码不一致的问题

    我们在测试环境多人开发时,由于会存在多个测试.开发环境,但是大家共用一个数据库. 这时候会碰到一个问题,一旦有某个人通过Migration更新了数据库,其他环境在首次查询数据库的时候都会收到Dbcon ...

  7. MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

    在项目开启阶段,其中一个很重要的环节就是选架构. 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题!   下面我就在这里梳理一下目前常见的一些架构模式. 先逐个对它们的分析 ...

  8. 不用bootstrap,只用CSS创建网格布局

    本文译自[http://j4n.co/blog/Creating-your-own-css-grid-system],英语好的,可直接查看原网页,不需要FQ. 翻译拿不准的地方会有英文原文,方便大家理 ...

  9. Extjs报错处理

    错误信息: IE:SCRIPT1009: 缺少 '}' FF: SyntaxError: identifier starts immediately after numeric literal ... ...

  10. sql语句中出现笛卡尔乘积 SQL查询入门篇

    2014-12-29  凡尘工作室   阅 34985  转 95 本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 ...