scrapy中的get请求及基本使用:

1. 创建scrapy项目

scrapy startproject QiuBaiProject

2. 创建爬虫文件

scrapy genspider QiuBai  www.qiubai.com

3.修改配置文件

"""
setting.py :配置文件
""" # Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36' # Obey robots.txt rules
ROBOTSTXT_OBEY = False
ITEM_PIPELINES = {
#使用哪个管道处理,后面是管道优先级 1-1000,数字越低,优先级越高
'qiubaiproject.pipelines.QiubaiprojectPipeline': 300,
} """
关于日志的说明:默认显示的等级是DEBUG,上面所有的信息全部显示
如果等级配置为ERROR,那么就只显示ERROR,CRITICAL
在配置文件中进行配置
"""
# 配置显示日志信息等级
# LOG_LEVEL = 'ERROR'
# 不将信息显示到屏幕中,将信息显示到文件中
LOG_FILE = 'log.txt'

4. 编写item.py文件

"""
items.py : 这里面是定义数据结构的地方
""" import scrapy class QiubaiprojectItem(scrapy.Item):
"""
item对象的用法和字典的用法一模一样,可以快速的转化为字典
"""
# define the fields for your item here like:
# name = scrapy.Field()
# 图片链接
image_src = scrapy.Field()
# 用户名
name = scrapy.Field()
# 年龄
age = scrapy.Field()
# 内容
content = scrapy.Field()
# 好笑个数
haha_count = scrapy.Field()
# 评论个数
ping_count = scrapy.Field()

5. 编写爬虫文件

# -*- coding: utf-8 -*-
'''
QiuBai.py 爬虫文件
''' import scrapy
from qiubaiproject.items import QiubaiprojectItem class QiubaiSpider(scrapy.Spider):
name = 'qiubai'
allowed_domains = ['www.qiushibaike.com'] #起始页
start_urls = ['http://www.qiushibaike.com/'] # 爬取其他页面的内容
url = 'https://www.qiushibaike.com/8hr/page/{}/'
page = 1 def parse(self, response):
# 先找到所有的div
div_list = response.xpath('//div[@id="content-left"]/div')
# 遍历这个div的列表,依次获取里面的每一条信息
for odiv in div_list:
# 创建对象
item = QiubaiprojectItem()
# 用户头像
face = 'https:' + odiv.xpath('.//div[1]//img/@src')[0].extract()
# 用户的名字
name = odiv.xpath('.//div[1]//h2').extract()[0]
# 用户的年龄
age = odiv.xpath('.//div[starts-with(@class,"articleGender")]').extract_first()
# 获取用户内容
ospan = odiv.xpath('.//div[@class="content"]/span[1]')[0]
content = ospan.xpath('string(.)').extract()
# 用户的好笑个数
haha_count = odiv.xpath('.//div[@class="stats"]/span[@class="stats-vote"]/i/text()').extract()[0]
# 获取评论个数
ping_count = odiv.xpath('.//div[@class="stats"]/span[@class="stats-comments"]//i/text()').extract()[0] # 将提取的信息保存起来
item['image_src'] = face
item['name'] = name
item['age'] = age
item['content'] = content
item['haha_count'] = haha_count
item['ping_count'] = ping_count yield item
# 接着爬取其他的页面
if self.page <= 5:
self.page += 1
# 拼接出来指定的url
url = self.url.format(self.page)
# 接着发送请求,callback是发送请求之后,用哪一个回调函数处理这个请求
yield scrapy.Request(url=url, callback=self.parse)

6.编写管道文件

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

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import json class QiubaiprojectPipeline(object):
# 爬虫启动的时候只会调用一次
def open_spider(self, spider):
# 将文件的打开写道这里
self.fp = open('qiubai.json', 'w', encoding='utf8') # 这个函数就是处理item的函数,每一个item过来都会回调这个方法
def process_item(self, item, spider):
# 将对象转化为字典
obj = dict(item)
# 将字典转化为json格式字符串
string = json.dumps(obj, ensure_ascii=False)
self.fp.write(string + '\n')
return item # 爬虫结束的时候回调这个方法
def close_spider(self, spider):
self.fp.close()

最新文章

  1. 使用日期控件datePicker,阻止移动端的自动调取键盘的事件
  2. Hadoop 简介
  3. 编译C#代码
  4. 十五天精通WCF——第十天 学会用SvcConfigEditor来简化配置
  5. POI导出excel的简单demo
  6. 解决Eclipse导出javadoc乱码问题
  7. XML1_XML基础
  8. 霍布森选择效应(Hobson choice Effect)
  9. 使用 Docker 容器应该避免的 10 个事情
  10. 3D 灯光介绍
  11. Algorithms 4th - 1.1 Basic Programming Model - CREATIVE PROBLEMS
  12. zf-关于统计分析表单导出(写这个的 太麻烦了)
  13. 用PHPMailer在本地win环境,可以接收到邮件和附件,但在linux环境只能接收邮件信息接不到附件,是我的路
  14. [HNOI 2013]比赛
  15. MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
  16. IP通信基础学习第四周(上)
  17. SQL SEVER 时间格式转换
  18. scrapy爬虫之断点续爬和多个spider同时爬取
  19. 大数据 时间同步问题 解决hbase集群节点HRegionServer启动后自动关闭
  20. JDBC-通用查询

热门文章

  1. css布局中的垂直水平居中对齐
  2. CentOS 7设置静态IP并修改DNS
  3. 今天抠图,Python实现一键换底片!想换什么换什么(附源码)
  4. Java 源码刨析 - HashMap 底层实现原理是什么?JDK8 做了哪些优化?
  5. Java容器面试总结
  6. spring源码分析——BeanPostProcessor接口
  7. Flask框架基础功能
  8. 关于日期格式你必须知道的坑( yyyy-MM-dd HH:mm:ss)
  9. Redis自带压测工具(redis-benchmark.exe)
  10. JavaWeb网上图书商城完整项目--day02-12.激活功能各层实现