php yield 携程,爬取携程国内地区攻略评论
这里我们用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 携程,爬取携程国内地区攻略评论相关推荐
- Python爬虫——aiohttp异步协程爬取同程旅行酒店评论
大家好!我是霖hero Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线 ...
- 送书 | aiohttp异步协程爬取同程旅行酒店评论并作词云图
大家好!我是啃书君! Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线程 ...
- python爬取去哪儿网机票_干货|Python爬取《去哪儿》攻略库,制作一份详细的旅行攻略,疫情后来一场说走就走的旅行!...
去哪儿是中国领先的在线OTA网站,为消费者提供机票.酒店.会场 .度假产品的实时搜索,并提供旅游产品团购以及其他旅游信息服务.去哪儿网站上有丰富的图片.评论数据,这些大量的数据对于从事数据岗位的来说的 ...
- 元旦假期,去哪里旅游好呢?Python爬取元旦旅游最全攻略!
2020还有最后几天就就结束了,您考虑好2021的第一天去哪里旅游了吗,不如来看看使用Python爬取最全攻略!受益的朋友给个三连. 转发请求声明. 一.实现思路 首先我们爬取的网站是一个穷游网站: ...
- python爬携程景区评论_python爬取携程景点评论信息
python爬取携程景点评论信息 今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的 按下F12之后,F5刷新一下 具体需要URL Request的方式为P ...
- python爬取携程旅游评价信息词云图分析
python爬取携程旅游评价信息词云图分析 前言 前面咱们已经分析过如何爬取携程旅游的相关信息,如果没有看过的,可以先跳转看一下前面的那篇博客:python 爬虫 一键爬取携程旅游团数据 这一篇呢,咱 ...
- python 爬取携程旅游景点评论
python爬取携程旅游景点评论 爬取网址:https://you.ctrip.com/ 爬取评论全部代码 import requests import json import re import t ...
- Python爬虫案例:爬取携程评论
前言 之前爬取美团,马蜂窝等网站的数据都挺顺利,大众点评(这个反爬机制有点麻烦)在磕磕绊绊中也算成功(重点是网页页数的变化和关键字的隐藏替换)但携程居然遇到了瓶颈. 主要是查看源代码时发现关键商户信息 ...
- python 携程登陆,Python爬取携程信息
python爬取携程景点评论信息 今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的 按下F12之后,F5刷新一下 具体需要URL Request的方式为P ...
最新文章
- oracle 查询天,Oracle查询_ 单表查询
- listener does not currently know of service requested in connect descriptor
- SAP CRM WebClient UI的cross component navigation跳转
- 微信小程序利用缓存提高接口请求性能
- java实现线程的方式_java多线程实现的四种方式
- linux系统下获取IP,MAC,子网掩码,网关
- Java Date实现加一天,年月日类推往后+1,日期+1,月份+1,年份+1
- python 颜色大全 颜色对应 matplotlab plot 颜色对应
- 基于SPSS的聚类分析原理概述
- Oracle排序查询语句
- 教你如何破解无线网络密码(无线网络密码破解)
- 【Electronics】数字电路实验——交通灯设计
- 查看npy文件中存的是什么
- 用户价值分层——基于RFM模型的研究分析
- 2022软科中国最好学科排名——计算机科学与技术
- 拿走不谢,最全匹配中国大陆手机号码的正则表达式
- ES6---数组的spread扩展运算符
- python控制苹果手机触摸屏失灵怎么办_苹果手机触摸屏失灵的各种解决方法
- Python、Pycharm、Django及各插件安装经验汇总
- fluent中网格检查