文章由本人博客首发转载请注明链接: http://qinfei.glrsmart.com/2018/11/06/scrapy-shi-zhan/
前言
一直知道有一个叫做 scrapy 的神器, 但是一直没有用过, 今天我找到了一个网站似乎很好的样子, 上面资料很玄乎,所以就爬了玩玩, 请原谅我不能说网站名称,大家都跟着我爬数据人家还玩不玩了? 你要是练手的话请自行寻找目标啦...
概览
这里放一个scrapy 官方图片
安装
请根据附件中的列表自行安装 requiremtnes.txt
pip install -r requirements.txt
开始工程
scrapy startproject 工程名称
然后工程结构就是这样啦
工程名称/
scrapy.cfg
工程名称/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
先看一下结构:
items 是我们需要爬取数据的结构描述, 不用着急,后面会讲到
pipelines 是一个数据管道, 所有 spiders 抓取的数据都会通过 pipelines 中的某一个或某几个对象中溜出去, 具体经过那一个就看你 settings 中怎么配置啦.
settings 所有参数设置都在里面,最好你的配置信息也在放在里面
spiders 爬虫文件夹, 在里面编写各种爬虫,可怕吗????
小爬虫试试手 first_spider
# -*- coding: utf-8 -*-
import scrapy
class FirstSpider(scrapy.Spider):
'''
第一个爬虫
'''
name = 'jys_seg'
allowed_domains = ['domain']
start_urls = ['http://domain:port/mweb/index.php']
def parse(self, response):
# 筛选中间表格内容, 用这些表格逐条爬取
# print(os.getcwd())
segs = response.xpath('//div[@class="mui-media-body"]/text()').extract()
for seg in segs:
print(seg)
这个小玩意一点点代码,应该可以看懂吧, 解释一下:
- name 爬虫名称,这个很重要, 运行爬虫的时候用
- allowed_domains 允许访问域名
- start_urls 爬虫开始的 url
- parse 解析函数, 这个函数名不是瞎起的,根据 scrapy 的指导,访问完连接之后就进入了这个函数
启动: scrapy crawl jys_seg
最后一个参数是里面的 name
然后就可以看到输出爬取的信息了.
response.xpath 这里是 lxml 解析了 页面里面的 div 具有 ui-media-body class 的 text() 内容, 获取到了我们要的目录.
好了, 我们已经可以使用 scrapy 了, 简单吗? 云里雾里? 后面一点点讲吧
-----下面是 requiremtnes.txt 内容,请根据需要安装----
asn1crypto==0.24.0
attrs==18.2.0
Automat==0.7.0
beautifulsoup4==4.6.3
bs4==0.0.1
certifi==2018.10.15
cffi==1.11.5
chardet==3.0.4
constantly==15.1.0
cryptography==2.3.1
cssselect==1.0.3
hyperlink==18.0.0
idna==2.7
incremental==17.5.0
lxml==4.2.5
mysqlclient==1.3.13
parsel==1.5.1
pyasn1==0.4.4
pyasn1-modules==0.2.2
pycparser==2.19
PyDispatcher==2.0.5
PyHamcrest==1.9.0
pyOpenSSL==18.0.0
queuelib==1.5.0
requests==2.20.0
requests-toolbelt==0.8.0
Scrapy==1.5.1
service-identity==17.0.0
six==1.11.0
SQLAlchemy==1.2.13
Twisted==18.9.0
urllib3==1.24
w3lib==1.19.0
zope.interface==4.6.0