这里我们用scrapy 框架爬取数据

爬虫文件里面的代码:

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

import json

import re

import os

import scrapy

from copy import deepcopy

from scrapy_redis.spiders import RedisSpider

class ItcastSpider(scrapy.Spider):

# 爬虫名称, 运行爬虫的时候需要用到, 必须唯一

name = ‘Ctrip‘

# 起始的URL列表, 爬虫从这些URL开始爬取

start_urls = [‘http://you.ctrip.com/place/‘]

def parse(self, response):

#获取所有地区的url 和名字

url_list = response.xpath(‘//*[@id="journals-panel-items"]/dl[2][email protected]).extract()

name_list = response.xpath(‘//*[@id="journals-panel-items"]/dl[2]/dd/ul/li/a/text()‘).extract()

i = 0

for  url in url_list:

#国内每个地方的文件夹

os.makedirs(‘路径‘+name_list[i])

yield scrapy.Request(‘http://you.ctrip.com‘ + url, callback=self.parse_data,meta={‘text_name‘:deepcopy(name_list[i])})

i += 1

def parse_data(self,response):

os_name = response.meta[‘text_name‘]

url = response.xpath(‘/html/body/div[3]/div/div/ul/li[3][email protected]).extract_first()

yield scrapy.Request(‘http://you.ctrip.com‘ + url, callback=self.parses,meta={‘text_name‘:deepcopy(os_name)})

def parses(self, response):

os_name = response.meta[‘text_name‘]

id = None

try:

id = response.meta[‘id‘]

id += 1

except:

pass

url_list = re.findall(""".*?""",

response.text)  # 返回url列表

# 给所有的景点url补充前缀http://you.ctrip.com,并添加到总的景点url列表:url_total

su = 0

for url in url_list:

fi = url.find(‘http‘)  # 如果能找到,返回0。否则返回-1

if fi:

su += 1

yield scrapy.Request(‘http://you.ctrip.com‘ + url, callback=self.parse_data_list,meta={‘text_name‘:deepcopy(os_name)})

else:

pass

if not id:

id = 2

if su != 0:

url_s = ‘http://you.ctrip.com/sightlist/guilin28/s0-p{}.html‘.format(id)

yield scrapy.Request(url_s, callback=self.parses, meta={‘id‘: id,‘text_name‘:deepcopy(os_name)})

def parse_data_list(self,response):

os_name = response.meta[‘text_name‘]

name = re.findall(‘

(.*?)

‘, response.text)[0]

id = re.findall(‘var poiid = "(.*?)"‘, response.text)

id = str(id[0])

data = {  # POST请求参数

‘poiID‘: id,  # 景点评论页的poiID

‘pagenow‘: ‘1‘,  # 评论页的页码

}

url = ‘http://you.ctrip.com/destinationsite/TTDSecond/SharedView/AsynCommentView‘  # 获取携程评论的url。跟景点url不一样

yield scrapy.FormRequest(url=url,

formdata=data ,

callback=self.parse_page,

meta={‘name‘: name,‘data‘:data,‘text_name‘:os_name}

)

def parse_page(self,response):

os_name = response.meta[‘text_name‘]

name = response.meta[‘name‘]

data = response.meta[‘data‘]

data[‘pagenow‘] = str(int(data[‘pagenow‘])+1)

url = ‘http://you.ctrip.com/destinationsite/TTDSecond/SharedView/AsynCommentView‘

list_comment = re.findall(‘(.*?)

response.text)  # 提取评论,返回当前页的评论列表

if list_comment:

#写入对应的地区

with open(‘路径‘+os_name+‘/‘ + name + ‘.txt‘, ‘a‘) as f:

for i in list_comment:

f.write(i.replace(‘ ‘, ‘‘).replace(‘ ‘, ‘‘).replace(‘&‘, ‘‘).replace(‘quot;‘, ‘‘))

f.write(‘\n‘)

f.write(‘\n‘)

yield scrapy.FormRequest(url=url,

formdata=data,

callback=self.parse_page,

meta={‘name‘: name, ‘data‘: data,‘text_name‘:os_name}

)

else:

pass

更多技术咨询可关注:gzitcast

原文:https://www.cnblogs.com/heimaguangzhou/p/11590613.html

php yield 携程,爬取携程国内地区攻略评论相关推荐

  1. Python爬虫——aiohttp异步协程爬取同程旅行酒店评论

    大家好!我是霖hero Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线 ...

  2. 送书 | aiohttp异步协程爬取同程旅行酒店评论并作词云图

    大家好!我是啃书君! Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线程 ...

  3. python爬取去哪儿网机票_干货|Python爬取《去哪儿》攻略库,制作一份详细的旅行攻略,疫情后来一场说走就走的旅行!...

    去哪儿是中国领先的在线OTA网站,为消费者提供机票.酒店.会场 .度假产品的实时搜索,并提供旅游产品团购以及其他旅游信息服务.去哪儿网站上有丰富的图片.评论数据,这些大量的数据对于从事数据岗位的来说的 ...

  4. 元旦假期,去哪里旅游好呢?Python爬取元旦旅游最全攻略!

    2020还有最后几天就就结束了,您考虑好2021的第一天去哪里旅游了吗,不如来看看使用Python爬取最全攻略!受益的朋友给个三连. 转发请求声明. 一.实现思路 首先我们爬取的网站是一个穷游网站: ...

  5. python爬携程景区评论_python爬取携程景点评论信息

    python爬取携程景点评论信息 今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的 按下F12之后,F5刷新一下 具体需要URL Request的方式为P ...

  6. python爬取携程旅游评价信息词云图分析

    python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...

  7. python 爬取携程旅游景点评论

    python爬取携程旅游景点评论 爬取网址:https://you.ctrip.com/ 爬取评论全部代码 import requests import json import re import t ...

  8. Python爬虫案例:爬取携程评论

    前言 之前爬取美团,马蜂窝等网站的数据都挺顺利,大众点评(这个反爬机制有点麻烦)在磕磕绊绊中也算成功(重点是网页页数的变化和关键字的隐藏替换)但携程居然遇到了瓶颈. 主要是查看源代码时发现关键商户信息 ...

  9. python 携程登陆,Python爬取携程信息

    python爬取携程景点评论信息 今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的 按下F12之后,F5刷新一下 具体需要URL Request的方式为P ...

最新文章

  1. oracle 查询天,Oracle查询_ 单表查询
  2. listener does not currently know of service requested in connect descriptor
  3. SAP CRM WebClient UI的cross component navigation跳转
  4. 微信小程序利用缓存提高接口请求性能
  5. java实现线程的方式_java多线程实现的四种方式
  6. linux系统下获取IP,MAC,子网掩码,网关
  7. Java Date实现加一天,年月日类推往后+1,日期+1,月份+1,年份+1
  8. python 颜色大全 颜色对应 matplotlab plot 颜色对应
  9. 基于SPSS的聚类分析原理概述
  10. Oracle排序查询语句
  11. 教你如何破解无线网络密码(无线网络密码破解)
  12. 【Electronics】数字电路实验——交通灯设计
  13. 查看npy文件中存的是什么
  14. 用户价值分层——基于RFM模型的研究分析
  15. 2022软科中国最好学科排名——计算机科学与技术
  16. 拿走不谢,最全匹配中国大陆手机号码的正则表达式
  17. ES6---数组的spread扩展运算符
  18. python控制苹果手机触摸屏失灵怎么办_苹果手机触摸屏失灵的各种解决方法
  19. Python、Pycharm、Django及各插件安装经验汇总
  20. fluent中网格检查

热门文章

  1. Linux dnf使用记录
  2. WoShop跨境电商国际支付Paypal支付商城全开源无加密商城源码
  3. 阿里移动11.11 | Weex 在双十一会场的大规模应用--备用
  4. 汉字Unicode表
  5. 【excel】SUMIF合并单元格
  6. 现金流动负债比率 和 ROE详解
  7. 拉流与推流的区别_RTSP协议交互流程之推流分析
  8. html表头解释_1分钟内解释的html
  9. LeetCode 881. 救生艇
  10. 一个java程序员看待互联网行业与物联网行业的区别