丽江古城(图)

我和妻子去云南游玩,途经“高原姑苏”丽江古城。白天古城象一座生意兴旺的商贸城,即使你的双脚踩在微微有些湿滑的青石小道上,也很难感觉它超过800年的历史记忆。夜晚的古城是小资的好去处,它那小桥流水的街道两旁满是酒吧、书吧和小餐馆,价格是不必说了,不过享受的确独一无二。

只有到深夜,游人渐渐离开古城回到酒店,而古城的商铺都上了门板,居民也进入梦乡的时候,古城的上百条狭窄幽深的街道两旁,屋檐下点起盏战宫灯,才能让你仿佛置身又一个世界,那历史、那文化一下子全都从地下钻了出来。

### 编写Python爬虫抓取丽江古城酒店和民宿数据 为了实现这一目标,可以采用多种方法和技术栈。以下是基于 Selenium 和 Scrapy 的两种解决方案。 #### 使用 Selenium 抓取动态加载的内容 Selenium 是一种强大的工具,适用于模拟浏览器行为并处理 JavaScript 动态渲染的页面[^1]。以下是一个简单的示例代码: ```python from selenium import webdriver from selenium.webdriver.common.by import By import time # 初始化 WebDriver (假设使用 Chrome 浏览器) driver = webdriver.Chrome() try: # 打开目标网站 driver.get("https://example.com/hotels-in-lijiang") # 替换为目标网址 # 等待页面完全加载 time.sleep(5) # 查找所有酒店或民宿的信息容器 hotels = driver.find_elements(By.CLASS_NAME, "hotel-card") data = [] for hotel in hotels: name = hotel.find_element(By.TAG_NAME, 'h2').text price = hotel.find_element(By.CLASS_NAME, 'price-tag').text rating = hotel.find_element(By.CLASS_NAME, 'rating-star').get_attribute('data-rating') entry = { "name": name, "price": price, "rating": rating } data.append(entry) finally: # 关闭浏览器实例 driver.quit() print(data) ``` 上述代码通过 Selenium 模拟浏览器访问网页,并提取所需字段(如名称、价格、评分)。注意需要安装 `selenium` 库以及对应的浏览器驱动程序。 --- #### 使用 Scrapy 构建高效的爬虫框架 Scrapy 是一个功能强大且灵活的爬虫框架,适合大规模数据采集任务。下面展示了一个基本的 Scrapy Spider 实现方案: ##### 定义项目结构 创建一个新的 Scrapy 项目: ```bash scrapy startproject lijiang_hotel_scraper cd lijiang_hotel_scraper ``` ##### 创建 Spider 文件 编辑 `spiders/lijiang.py` 如下所示: ```python import scrapy class LiJiangSpider(scrapy.Spider): name = "lijiang" allowed_domains = ["example.com"] # 替换为实际域名 start_urls = [ "https://example.com/hotels-in-lijiang", # 初始 URL ] def parse(self, response): for hotel in response.css('.hotel-card'): yield { 'name': hotel.css('h2::text').get(), 'price': hotel.css('.price-tag::text').get(), 'rating': hotel.css('.rating-star').attrib['data-rating'], } next_page = response.css('a.next-page-link::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 运行此 Spider 可以自动遍历多页内容并保存结果到 JSON 或其他文件格式中。 --- #### 数据存储与后续分析 无论是使用 Selenium 还是 Scrapy,都可以将获取的数据导出至 CSV/JSON 文件以便进一步分析。例如,在 Scrapy 中可以通过命令指定输出路径: ```bash scrapy crawl lijiang -o hotels.json ``` 这会生成名为 `hotels.json` 的文件,其中包含所有抓取的结果。 --- #### 注意事项 在开发过程中需要注意以下几个方面: - **反爬机制**:部分网站可能设置验证码或其他防护措施阻止自动化请求。需研究其策略调整代码逻辑。 - **法律合规性**:确保遵循目标站点的服务条款及当地法律法规,避免侵犯隐私权等问题发生。 - **性能优化**:对于大型数据集建议引入缓存机制减少重复查询次数提高效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值