今天遇到的问题和昨天差不多,一个Scrapy装了好久,anaconda卸了又装,pycharm卸了又装,环境变量配置一堆,依赖包下载一堆。查了一堆资料总算是搞好了。

Scripy:

先放个框架结构图(来自嵩天老师mooc)



Scrapy 爬虫的使用步骤

  1. 创建一个工程和spider模板
  2. 编写spider
  3. 编写Item Pipeline
  4. 优化配置策略

两种风格的demospider写法:

class DemoSpider(scrapy.Spider):
name = 'demo'
#allowed_domains = ['python123.io']
start_urls = ['http://python123.io/ws/demo.html'] #启动时最开始的链接 def parse(self, response): #解析和操作的相关步骤
fname = response.url.split('/')[-1] #文件名叫demo.html(切片,得到最后一个)
with open(fname,'wb+') as f:
f.write(response.body)
self.log = ('saved file %s.'% fname)

class DemoSpider(scrapy.Spider):
name = "demo" def start_requests(self):
urls = [
'http://python123.io/ws/demo.html'
]
for url in urls:
yield scrapy.Request(url=url,callback=self.parse) def parse(self,response):
fname = response.url.split('/')[-1]
with open(fname,'wb') as f:
f.write(response.body)
self.log('Save file %s.' % fname)

几种类:

Request类

class scrapy.http.Request()

  • Request对象生成一个HTTP请求
  • 由Spider生成,由Downloader执行

属性和方法

.url 对应请求的url地址

.method 请求方法

.headers 字典类型风格的请求头

.body 请求内容主题

.meta 用户添加的扩展信息

.copy() 复制该响应

Response类

class scrapy.http.Request()

  • Response对象表示一个http响应
  • 由downloader生成,spider来处理

属性和方法

.urls Response对应的url地址

.status HTTP状态码

.headers Response对应的头部信息

.body Response对应的内容信息

.flags 一组标记

.request 产生Response类型对应的Request对象

.copy() 复制该响应

Item类

class scrapy.item.Item()

  • Item对象表示一个从HTML页面中提取的信息内容
  • 由Spider生成,由Item Pipeline进行处理
  • Item类似字典类型,可以按照字典类型进行相关操作\

Scrapy爬虫提取信息的方法

BeautifulSoup

lxml

re

CSS selector

XPath selector

最新文章

  1. http长轮询&短轮询
  2. spring.net (3)依赖注入基础2
  3. c++的引用
  4. Mountains(CVTE面试题)解题报告
  5. 闲扯游戏编程之html5篇--山寨版《flappy bird》源码
  6. (转)C#实现MD5加密
  7. 用户 'IIS APPPOOL\ASP.NET V4.0' 登录失败 解决办法…………
  8. Y86模拟器安装
  9. 怎样写 OpenStack Neutron 的 Extension (一)
  10. matlab练习程序(图像马赛克)
  11. svn - 常用命令
  12. PICT实现组合测试用例(一)
  13. Java流操作之转换流
  14. codeforces 388B Fox and Minimal path
  15. php流行笔试题及答案
  16. HDOJ(HDU) 1898 Sempr == The Best Problem Solver?(水题、、、)
  17. 干货~powershell与bash和docker在项目中怎么用
  18. Linux 管理软件
  19. Eclipse For JavaSE安装、配置、测试
  20. Linux之ls

热门文章

  1. F. Machine Learning 带修端点莫队
  2. 消息队列RabbitMQ的安装配置与PHP中的使用
  3. jsonp跨域封装
  4. java数值类型之间的转换
  5. 工作中遇到的SQL
  6. C# 7.0 新增功能&结合微软简化理解
  7. Java的字节流,字符流和缓冲流对比探究
  8. Flutter 动画鼻祖之CustomPaint
  9. Spring Boot笔记(二) springboot 集成 SMTP 发送邮件
  10. Java实现 蓝桥杯 基础练习 特殊的数字