栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬取去哪儿旅行景点信息—以大连为例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬取去哪儿旅行景点信息—以大连为例

因技术有限,以至于存在不少纰漏(下文代码中会详细说明),还请多多包涵,希望看到的大佬带带我这个菜鸡解决,先在此感谢了

本文属于补全代码,原文连接如下,对此我只想说,恰饭没错,但是这样的引流确实膈应人Python爬取去哪了旅游景点数据_【CSDN官方推荐】-CSDN博客

本文仅供学习、交流使用,不具有任何商业用途如有问题请及时联系我以作处理

导入库函数

import requests
import parsel
from parsel import Selector
from time import sleep
from random import random
import pandas as pd
import numpy as np

 全部代码内容

myheader = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"
           } #挂请求头
fout = open('去哪儿旅行-大连景点信息1.txt','w',encoding='utf-8')#建立txt文件存储
for page in range(1,41):#构建页面循环
    url = f'https://piao.qunar.com/ticket/list_%E5%A4%A7%E8%BF%9E.html?from=mps_search_suggest_h&keyword=%E5%A4%A7%E8%BF%9E&page={page}'
    sleep(2*random())
    response = requests.get(url=url, headers=myheader)
    per=Selector(response.text)
    result=per.css('#search-list')
    try:
        for i in range(1,16):#循环查取每页内的所需值
#             li=result.css(f'#search-list > div:nth-child({i})')     此处和下面代码作用相同,都为定位到包含爬取信息的父标签
            li=result.xpath(f'//*[@id="search-list"]/div[{i}]')       #上面使用了Selector对象进行定位,这里使用的是Xpath相对路径,可能也是因为这个所以导致爬取信息不完整,
            sleep(2*random())                                         #接上文:个人盲猜包含信息的父标签是动态的,所以导致有的页面无法有效爬取,希望看到的的大佬可以进行改进
            title = li.css('.sight_item_caption a::attr(title)').get()  # 景区名字
            level = li.css('.sight_item_info .level::text').get()   # 景区等级
            area = li.css('.area a::attr(title)').get()     # 地区
            address = li.css('.address span::attr(title)').get()  # 地址
            string = li.css('.product_star_level em::attr(title)').get()    # 热度
            star_level = float(string.strip('热度: '))
            intro = li.css('.intro::attr(title)').get()  # 简介
            price = li.css('.sight_item_price em::text').get()   # 价格
            hot_num = li.css('.hot_num::text').get()  # 月销
            print(title,level,area, address,star_level,intro,price, hot_num,sep='#',file=fout)#打印每个景点各个信息,以"#"号隔开并存取到txt文件中
    except : #1.有的没有景区热度所以使用try函数抛出了异常 2.抛出了了上面因为父标签构建爬取到的信息
            sleep(1*random()) #随机休眠伪装一下
    print(f'-------第{page:02}页爬取完成------')
fout.close()
#pandas兄yyds,最后需要excel所以重新读取另存了xlsx文件
df = pd.read_csv('去哪儿旅行-大连景点信息.txt',sep='#',
                 names=['景区名字','景区等级','地区',
                        '地址','热度','简介','价格','月销'])
df.to_excel('去哪儿旅行-大连景点信息.xlsx',index=False)
print('-------搞完睡觉,没意思了-------')

运行效果如图

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号