当前位置:   article > 正文

【网络爬虫篇】使用Scrapy爬取去哪儿网游记数据并保存(超详细)_去哪儿网爬虫

去哪儿网爬虫

 更多优秀文章借鉴:

1. 使用Selenium实现黑马头条滑块自动登录

2. 使用多线程采集爬取豆瓣top250电影榜

3. 使用Scrapy爬取去哪儿网游记数据 

4. 数据采集技术综合项目实战1:国家水稻网数据采集与分析

5. 数据采集技术综合项目实战2:某东苹果15数据采集与分析

6. 数据采集技术综合案例实战3:b站弹幕采集与分析

7. 逆向实战—京东:滑块验证码(逆向登录)

导航小助手

1. 目标网址:

2. 准备工作:

3. 思路分析:

4. 编写相关的爬虫框架规则:


目标网址:

https://travel.qunar.com/travelbook/list.htm?page=1&order=hot_heat

准备工作:

1.按住按win+r,在弹出框里输入cmd。

2.进入下图界面,默认为C盘,使用cd \d +目标路径即可进入自己指定的文件夹下。

3.在自己指定的文件夹下输入scrapy startproject qunar,利用scrapy框架创建qunar文件。

4.切换到项目qunar的根目录,输入命令:scrapy genspider qunarspider https://travel.qunar.com/travelbook/list.htm?page=1&order=hot_heat

以爬虫起始地址创建脚本文件,用于编写采集规则。如下图所示:

3.创建好后如下图所示,表示爬虫基本框架已经搭建完毕,即可写入脚本以及相应的爬虫规则。

思路分析:

1.打开去哪网游客博主发布游记主页面,通过谷歌开发者工具可观察到每一条记录都在"li"标签下面;目标字段有标题、作者、时间、人均费用等。

结论:观察可得到,当前网页以page进行分页,且每一个li标签存储着每一篇游记的相关信息。

2.打开网页源代码,搜索相关关键信息:

结论:观察得出,此网页为静态网页,可直接利用正则表达式、Xpath等解析方式通过返回源代码直接获取相关信息。

编写相关的爬虫框架规则:

1.在items.py中确定提取的相关字段:

  1. import scrapy
  2. class QunarItem(scrapy.Item):
  3. Title = scrapy.Field() # Title:文章标题
  4. Comment = scrapy.Field()# Comment:作者名称
  5. TravelLink = scrapy.Field()# TravelLink:标题的链接
  6. Date = scrapy.Field()# Date:出发日期
  7. Days = scrapy.Field() # Days:旅游共几天
  8. Photo_Nums = scrapy.Field()# Photo_Nums:照片数量
  9. Fee = scrapy.Field()# Fee:人均消费
  10. People = scrapy.Field()# People:适合人数
  11. Places = scrapy.Field()# Places:途径地点
  12. Views = scrapy.Field()# Views:评论人数
  13. Love = scrapy.Field() # Love:点赞数
  14. pass

2.在setting.py中确定相关爬取规则:

  1. BOT_NAME = "Qunar"
  2. SPIDER_MODULES = ["Qunar.spiders"]
  3. NEWSPIDER_MODULE = "Qunar.spiders"
  4. REDIRECT_ENABLED = False
  5. #不遵守爬虫协议
  6. ROBOTSTXT_OBEY = False
  7. #设置等待时间,降低爬虫频率
  8. DOWNLOAD_DELAY = 3
  9. #引入用户代码,Cookie等设置请求头
  10. DEFAULT_REQUEST_HEADERS = {
  11. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  12. "Accept-Language": "en",
  13. 'Cookie':'xxx',
  14. 'User-Agent':'xxx'
  15. }
  16. #打开存储通道
  17. ITEM_PIPELINES = {
  18. "Qunar.pipelines.QunarPipeline": 300,
  19. }
'
运行

3.在pipelines.py中设置存储方式,这里使用MongoDB进行存储:

  1. class QunarPipeline:
  2. def __init__(self):
  3. # 打开数据库,建立集合
  4. self.client=pymongo.MongoClient('localhost',27017)
  5. self.db=self.client['clj2']
  6. self.Qunar_text=self.db['Qunar_text']
  7. def process_item(self, item, spider):
  8. adapter=ItemAdapter(item)
  9. data=adapter.asdict()
  10. self.Qunar_text.insert_one(data)
  11. return item
'
运行

4.在Qunarspider.py脚本中写入获取信息的主代码:

  1. import time#引入time库,降低访问频率
  2. import scrapy#引入爬虫框架scrapy库
  3. from scrapy.selector import Selector#引用Selector方法,对目标response进行解析
  4. from ..items import QunarItem#从父目录中导入QunarItem
  5. class QunarSpider(scrapy.Spider):#编写QunarSpider类
  6. name = 'Qunarspider'#唯一名字
  7. # allowed_domains = ['travel.qunar.com']
  8. start_urls = ['https://travel.qunar.com/travelbook/list.htm?page=1&order=hot_heat']#基地址
  9. def parse(self, response):
  10. selector=Selector(response)#对目标返回的response进行解析
  11. item = QunarItem()#将在items.py定义好的相关字段赋值给变量item
  12. infos=selector.xpath('//li[starts-with(@class,"list_item")]')#找到循环点,此处为记录每一条游记的标签
  13. for info in infos:#进行循环
  14. #经过大量实验可知,某些游记也许存在空值,为了程序的正常运行,则进行抛出异常处理
  15. # 以获取标题为例:
  16. try:
  17. Title = info.xpath('.//h2[@class="tit"]/a/text()').extract()[0]#返回利用xpath已获取Title列表中的第一个元素
  18. item['Title']=Title#赋值
  19. time.sleep(1)#休息一秒
  20. #回调item,对items.py中的字段进行赋值
  21. yield item
  22. except IndexError:
  23. pass
  24. urls=['https://travel.qunar.com/travelbook/list.htm?page={}&order=hot_heat'.format(str(i))for i in range(2,201)]#对目标网站进行字符串格式化
  25. for url in urls:#循环
  26. yield scrapy.Request(url)#利用循环的urlparse回调函数

5.控制台输出每一页爬取的游记博主发布的游记信息,正常运行:

6.打开MongoDB数据库的Qunar_text集合,如下图所示:

对数据进行导出为Csv格式,一共2000条数据,如下图所示:

注意:需要完整源代码请私聊博主哦~

创作不易,请点个赞哦~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/1015335
推荐阅读
相关标签
  

闽ICP备14008679号