python scrapy 简单的爬虫

1 scrapy的文档 比较简单

http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html

我假定你已经安装了Scrapy。假如你没有安装,你可以参考这篇文章。

在本文中,我们将学会如何使用Scrapy建立一个爬虫程序,并爬取指定网站上的内容

1. 创建一个新的Scrapy Project

  scrapy creatproject "project-name"

2. 定义你需要从网页中提取的元素Item

3.实现一个Spider类,通过接口完成爬取URL和提取Item的功能

4. 实现一个Item PipeLine类,完成Item的存储功能

我将会用腾讯招聘官网作为例子。

Github源码:https://github.com/maxliaops/scrapy-itzhaopin

目标:抓取腾讯招聘官网职位招聘信息并保存为JSON格式。

新建工程

首先,为我们的爬虫新建一个工程,首先进入一个目录(任意一个我们用来保存代码的目录),执行:

scrapy startproject  yiou

最后的itzhaopin就是项目名称。这个命令会在当前目录下创建一个新目录itzhaopin,结构如下:

.

scrapy.cfg: 项目配置文件

items.py: 需要提取的数据结构定义文件

pipelines.py:管道定义,用来对items里面提取的数据做进一步处理,如保存等

settings.py: 爬虫配置文件

spiders: 放置spider的目录

定义Item

在items.py里面定义我们要抓取的数据:


1

2

3

4

5

6

7

8

import scrapy

class YiouItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field()
sub_title = scrapy.Field()
editor = scrapy.Field()
tags = scrapy.Field()
pass

实现Spider

Spider是一个继承自scrapy.contrib.spiders.CrawlSpider的Python类,有三个必需的定义的成员

name: 名字,这个spider的标识

start_urls:一个url列表,spider从这些网页开始抓取

parse():一个方法,当start_urls里面的网页抓取下来之后需要调用这个方法解析网页内容,同时需要返回下一个需要抓取的网页,或者返回items列表

所以在spiders目录下新建一个spider,tencent_spider.py:

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

# -*- coding:utf-8 -*-

import scrapy

from yiou.items import YiouItem

import logging

class YiouSpider(scrapy.Spider):
name = "yiou"
allowed_domains = "iyiou.com"
start_urls = [
"http://www.iyiou.com/"
]

def parse(self, response):
for sel in response.xpath("//*[@id=‘post_list‘]/div"):
item = YiouItem()
item[‘title‘] = sel.xpath("div[2]/h1/a/text()").extract()
item[‘sub_title‘] = sel.xpath("div[2]/p/text()").extract()
item[‘editor‘] = sel.xpath("div[2]/div[1]/div[1]/a/text()").extract()
item[‘tags‘] = sel.xpath("/div[2]/div[2]/div/a/text()").extract()
yield item

实现PipeLine

PipeLine用来对Spider返回的Item列表进行保存操作,可以写入到文件、或者数据库等。

PipeLine只有一个需要实现的方法:process_item,例如我们将Item保存到JSON格式文件中:

pipelines.py


1

2

3

4

5

6

7

8

9

10

11

12

13

import json

class YiouPipeline(object):
def __init__(self):
self.file = open(‘items.json‘, ‘wb‘)
def process_item(self, item, spider):
line = json.dumps(dict(item)) + "\n"
self.file.write(line.encode("GBK"))
# self.file.write(item[‘title‘].encode("GBK"))
# self.file.write("\n")
# self.file.write(item[‘sub_title‘].encode("GBK"))
# self.file.write("\n")
# self.file.write(item[‘editor‘].encode("GBK"))
# self.file.write("\n")
# self.file.write(item[‘tags‘].encode("GBK"))
# self.file.write("\n")
return item

到现在,我们就完成了一个基本的爬虫的实现,可以输入下面的命令来启动这个Spider:


1

scrapy crawl yiou

爬虫运行结束后,在当前目录下将会生成一个名为items.json的文件,其中以JSON格式保存了职位招聘信息。

时间: 2024-08-28 06:59:23

python scrapy 简单的爬虫的相关文章

Python scrapy 实现网页爬虫

Python scrapy 安装和网页爬虫功能实现 现在组内有个工作就是维护恶意URL库,然后这个维护工作,主要是通过从几个会发布恶意URL地址的网站获取恶意网址,每次都得花费半天,很乏味的事情.所以就想到能否用个爬虫搞定. 这两天研究了下python scrapy,发现利用scrapy的确很容易实现网址爬取功能. 一.scrapy安装 简单的说明一下scrapy的安装过程 window安装 先安装python,要提醒一下是环境变量的配置,只有环境变量配置对了,才能在命令行执行窗口找到pytho

python 一个简单的爬虫(1)

1.一个简单的爬虫:爬取豆瓣的热门电影的信息 技能:获取网页源码,正则表达式,函数调用,全局变量的定义 1 #! /usr/bin/env python 2 # -*- coding=utf-8 -*- 3 import requests 4 import json 5 import re 6 import sys 7 reload(sys) 8 sys.setdefaultencoding("utf-8") 9 classinfo = [] 10 f = open('info.txt

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

        前面一直强调Python运用到网络爬虫方面非常有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简单介绍下Python是如何爬去网络数据的,文章知识非常简单,但是也分享给大家,就当简单入门吧!同时只分享知识,希望大家不要去做破坏网络的知识或侵犯别人的原创型文章.主要包括: 1.介绍爬取CSDN自己博客文章的简单思想及过程 2.实现Python源码爬取新浪韩寒博客的316篇文章 一.爬虫的简单思想      最近看刘兵的<Web数据挖掘>知道,在研

python 最简单的爬虫

一个简单的爬虫工程 环境: OS:Window10 python:3.7 安装一些库文件 pip install requests pip install beautifulsoup4 pip install lxml 在安装的时候如果遇到了你的pip版本过低的错误的话,可以找到你本地的C:\Users\XXX\PycharmProjects\getHtml\venv\Lib\site-packages下面的pip-18.1.dist-info文件夹删除,之后在进行更新 下面是提取一个网页的图片

python scrapy简单爬虫记录(实现简单爬取知乎)

之前写了个scrapy的学习记录,只是简单的介绍了下scrapy的一些内容,并没有实际的例子,现在开始记录例子 使用的环境是python2.7, scrapy1.2.0 首先创建项目 在要建立项目的目录下执行命令scrapy startproject tutorial scrapy会帮你建立好项目,接着创建蜘蛛scrapy genspider zhuhuSpider zhihu.com 当前的文件结构是 --tutorial --spiders --__init__.py --zhihuSpid

使用python编写简单网络爬虫(一)

总算有时间动手用所学的python知识编写一个简单的网络爬虫了,这个例子主要实现用python爬虫从百度图库中下载美女的图片,并保存在本地,闲话少说,直接贴出相应的代码如下: ------------------------------------------------------------------------------------------- #coding=utf-8 # 导入urllib和re模块  import urllib import re # 定义获取百度图库URL的类

使用Python编写简单网络爬虫抓取视频下载资源

我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎.所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚本语言,没有之中的一个. Python的语言简洁灵活,标准库功能强大.寻常能够用作计算器,文本编码转换,图片处理,批量下载,批量处理文本等.总之我非常喜欢,也越用越上手,这么好用的一个工具,一般人我不告诉他.. .很多其它网络编程教程请上网维教程网 由于其强大的字符串处理能力,以及urllib2,c

Python实现简单的爬虫获取某刀网的更新数据

昨天晚上无聊时,想着练习一下Python所以写了一个小爬虫获取小刀娱乐网里的更新数据 [python] view plain copy #!/usr/bin/python # coding: utf-8 import urllib.request import re #定义一个获取网页源码的子程序 head = "www.xiaodao.la" def get(): data = urllib.request.urlopen('http://www.xiaodao.la').read(

Python 实现简单的爬虫

Python 是一种跨平台的计算机程序设计语言,面向对象动态类型语言,Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public License)协议,随着版本的不断更新和语言新功能的添加,Python 越来越多被用于独立的.大型项目的开发. 快速抓取网页: 使用urllib最基本的抓取功能,将百度首页的内容保存到本地目录下. >>> import urllib.request >>> >>> res=