重要提醒!!!!
携程反爬太强了,用自动化爬取,其他的数据都正确。唯独价格不正确!!!价格是携程随机生成的,不是正确的价格!
已完成搜索目的地,但无法解决携程需要登录才能查看酒店价格,即无法绕过登陆 想办法解决中 2021/2/5
还是无法绕过登陆,只能手动扫码登陆,并且在点击酒店详情后会跳出新的界面,要将driver定位到新的界面上,酒店详情还不能全部获取,后续要想办法将所有的酒店详情全部获取到 2021/2/16
可以获取各个酒店的详细信息,但是目前打开酒店的数量不确定,后面要解决打开酒店数量的问题。最重要的打开酒店的速度太慢了,打开一个酒店大概需要40多秒,也就是说如果爬取30个酒店,那么就需要近20分钟,效率太低,但爬的快了又会有被封ip的风险。 后面还要把代码分块处理,写到一块太乱了,不便于管理。还要把数据储存到mysql中,但这个我不会,要现学,可能会时间长一些。LOL代币才肝了1600个,太少了,至臻佐伊再不换下次就不知道啥时候了,熬夜淦!2021/2/17
解决了网页加载等待过长的问题 2021/2/17
家中有事,请假10天,果然在家学习效率太低了。
可以将爬下来的数据添加到mysql数据库中了,但是现在效率还是太低,而且有封ip的危险,所以还要解决一下。代码没有分块,接下来把代码分块,美观且方便管理,不会用scrapy,不然更方便。开学了,加油!2021/3/1
出现了奇奇怪怪的问题,不知道为啥,比如复制粘贴到新的py中就无法运行,显示AttributeError: ‘NoneType’ object has no attribute ‘send_keys’,只好自己重新将send_keys重新打一边,然后就可以运行了,还有其他奇奇怪怪的问题,我太难了,在bug中改代码。加入了数组,一次可以查一个省了2021/3/2
# -*- coding = utf-8 -*-
# @Time : 2021/3/3 13:54
# @Author : DLT
# @File : xiecheng1.py
# @Software : PyCharm
import pymysql as pymysql
from selenium import webdriver
from time import sleep
import re
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
if __name__ == '__main__':
desired_capabilities = DesiredCapabilities.CHROME
desired_capabilities["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(executable_path='chromedriver.exe') # 打开浏览器
driver.get('https://www.ctrip.com/') # 打开网站
sleep(3)
# driver.refresh() #刷新浏览器
'''进入携程主页'''
#首先登陆
'''需要手机扫码登陆,手动登录也可以,但是速度太慢'''
sign_in = driver.find_element_by_class_name("set-text").click()
sleep(13) # 8秒时间扫码
sleep(1)
#登陆成功后,页面跳转到搜索页面
# hotel = driver.find_element_by_id("nav_hotel") # 寻找酒店搜索
# hotel.click() # 点击
# sleep(2)
'''进入到酒店搜索页面之后'''
hotel = driver.find_element_by_id("nav_hotel").click() # 寻找酒店搜索
# 1、输入目的地
province = "河南" # 省级
citys= ["郑州", "开封", "洛阳", "平顶山", "安阳市", "鹤壁", "新乡", "焦作", "濮阳", "许昌", "漯河", "三门峡", "商丘", "周口", "驻马店", "南阳", "信阳"]
countys = [
["中原区", "二七区", "金水区", "惠济区", "管城区", "上街区", "巩义市", "新郑市", "登封市", "荥阳市", "新密市", "中牟县"],
["龙亭区", "鼓楼区", "禹王台区", "顺河区", "祥符区",<