python爬取去哪儿网_python网络爬虫(12)去哪网酒店信息爬取
目的意义
爬取某地的酒店价格信息,示例使用selenium在Firefox中的使用。
来源
少部分来源于书。python爬虫开发与项目实战
构造
本次使用简易的方案,模拟浏览器访问,然后输入字段,查找,然后抓取网页中的信息。存储csv中。然后再转换为Excel,并对其中的数据进行二次处理。
代码
整个过程相当于获取网页,下载,然后粗糙的存储过程,最终完成。
不能理解的是,这样是使用了Phantomjs么。
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import re
import csv
import time
class goWhere():
def __init__(self):
self.toCity=u'焦作'
self.driver=webdriver.Firefox()
self.driver.get("https://hotel.qunar.com/")
self.get_element()
for i in range(30):
self.get_response()
self.parser_store()
self.get_next_page()
def get_element(self):
self.elem_toCity=self.driver.find_element_by_name(u"toCity")
self.elem_fromDate=self.driver.find_element_by_name(u"fromDate")
self.elem_toDate=self.driver.find_element_by_name(u"toDate")
self.elem_search=self.driver.find_element_by_class_name('search-btn')
self.elem_toCity.clear()
self.elem_toCity.send_keys(self.toCity)
self.elem_search.click()
def get_response(self):
for i in range(5):
try:
WebDriverWait(self.driver,30).until(EC.presence_of_element_located((
By.CLASS_NAME,"item_price")))
break
except Exception as e:
self.driver.refresh()
print(e)
if(i==10):
self.driver.close()
exit()
js="window.scrollTo(0,document.body.scrollHeight);"
self.driver.execute_script(js)
time.sleep(5)
self.all=self.driver.find_elements_by_class_name("b_result_bd")
if(len(self.all)<16 or self.all[0].text==''):
self.driver.refresh()
self.get_response()
def parser_store(self):
pattern=re.compile('(.*\s?)')
for each in self.all:
each_text=re.findall(pattern, each.text)
print(each_text)
with open('text.csv','a',encoding='gb18030',newline='') as f:
f_csv=csv.writer(f,)
if len(each_text)==8:
each_text.pop(5)
if len(each_text)==6:
each_text.insert(2,'None')
f_csv.writerow(each_text)
print('finished')
def get_next_page(self):
self.nextBtn=self.driver.find_element_by_class_name('next')
self.nextBtn.click()
if __name__=='__main__':
goWhere()
print('task finish')
效果举例
二次处理的过程包括处理价格中的??,处理查看地图,处理礼品卡等字段,然后去掉起字,设定价格单元格为人民币格式。
后续
在实际操作过程中,有时网页不容易加载完成,有时加载正常。本次爬取的界面为26个左右共计780余数据。并没有完成数据爬取过程。
python爬取去哪儿网_python网络爬虫(12)去哪网酒店信息爬取相关推荐
- 基于python网络爬虫天气_Python网络爬虫之中国天气网
大家好,今天我们来讲讲怎么用python对中国天气网进行爬取并且对爬取到的数据进行数据可视化的显示 这就是我们今天要爬取的内容,将中国天气网上的华北.东北等地区七天内的天气数据进行一个爬取,并且对最高 ...
- Python3.x 网络爬虫之淘宝模特照片信息爬取
本文一部分代码参考网络大牛文章,在此深表感谢,如有侵犯请告知,谢谢. 本文主要是作者在学习过程中,对一些学习内容进行总结与练习,期望对后来学习者有一定的帮助. 使用的Python第三方库主要包括以下几 ...
- python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...
一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...
- Python网络爬虫数据采集实战:同花顺动态网页爬取
前文的爬虫都建立在静态网页基础之上,首先通过请求网站url获取到网页源代码.之后对源代码进行信息提取进而存储即可,本文则针对动态网页进行数据采集,首先介绍Ajax相关理论,之后实战爬取同花顺动态网页, ...
- python网络爬虫基础知识_Python网络爬虫基础知识
一.网络爬虫 网络爬虫又被称为网络蜘蛛,我们可以把互联网想象成一个蜘蛛网,每一个网站都是一个节点,我们可以使用一只蜘蛛去各个网页抓取我们想要 的资源.举一个最简单的例子,你在百度和谷歌中输入'Pyth ...
- python sub 不区分大小写_Python网络爬虫入门篇
1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...
- python网络爬虫的方法有几种_Python网络爬虫过程中5种网页去重方法简要介绍
一般的,我们想抓取一个网站所有的URL,首先通过起始URL,之后通过网络爬虫提取出该网页中所有的URL链接,之后再对提取出来的每个URL进行爬取,提取出各个网页中的新一轮URL,以此类推.整体的感觉就 ...
- python网络爬虫文献综述_python网络爬虫综述
本文主要是个人python学习过程中的碎碎念想,希望对感兴趣的童鞋有所帮助. 百度百科上网络爬虫的定义是:"网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者 ...
- 爬虫推特数据分析的外文文献_什么是网络爬虫?有什么用?怎么爬?看完这篇文章你就明白了...
源:Python架构师 https://dwz.cn/LI7NNc4g 一.什么是网络爬虫 随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要.互联网中的数据是海量的,如何自动高效地获取互联网 ...
最新文章
- ruoyi后台管理系统分析(三)---admin包
- [原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(前篇)...
- Python继承,子类调用父类的两(2)种方法
- Qt Creator建立一个通用项目
- C++ dlopen mini HOWTO 一篇非常好的介绍C++ dlopen linux/mac os x 编程的资料
- python中变量不需要事先声明_第二章 Python 变量
- redis zset转set 反序列化失败_Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析...
- php 字符串hash比较,分析两个 url 查询字符串和 hash 的区别
- mybatis连接mysql url_MyBatis与JDBC连接数据库所使用的url之间的差异
- linux shell将字符串分割数组
- 数据分析软件界面设计
- 输入地点名可以直接查询该位置的经度纬度(结合百度地图)
- 网页报表等无法打印提示网页上有错误的解决办法
- js 详解es6 let TDZ(暂时性死区)
- 揭露!华为HR实名控诉:不要相信HR,他们不诚信!
- 特斯拉又撞“人”了 汽车激光雷达“盛宴”开启
- 关于python中面向对象(一)
- TypeError: catching classes that do not inherit from BaseException is not allowed
- 基于slurm框架的GPU服务器集群搭建方法
- 计算机网络(七) | 应用层:HTTPS协议