python爬虫 去哪网数据分析

#1.下载去哪网数据
import requests
import csv
import time
from bs4 import BeautifulSoup
#定义数据字典
subjects = {"游乐场","自然风光","文化古迹","城市观光"}
headers = {"User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36"}
#准备CSV文档
csv_file = open("data.csv","w+",encoding="utf-8-sig",newline="")
csv_writer = csv.writer(csv_file)
#将CSV文件的头写入到文件中
csv_writer.writerow(["景点名称",
                    "所在城市",
                    "景点类型",
                    "景点级别",
                    "景点地址",
                    "景点热度"])
#定义一个用来请求URL函数
def get_html_by_url(url):
    try:
        response = requests.get(url=url,headers=headers)
        if response.status_code == 200:
            return response.text
    except:
        print("爬虫数据错误!")
#解析HTML,并将数据插存入到CSV文件中
def parse_html(html,subject):
    #先判断HTML中是否有数据,则直接返回None
    if not html:
        return None
    #开始解析,创建BS类对象soup
    soup = BeautifulSoup(html,"html.parser")
    #通过HTML代码的分析,我们发现所有的有效数据都在一个叫
    #所以我们要通过BS先查找search-list节点
    search_list = soup.find(id="search-list")
    #将search-list节点中所有的子节点获取到,形成一个列表
    items = search_list.find_all("div",class_="sight_item")
    #通过循环取出每一个景点中的信息数据
    for item in items:
        #获取景点名称
        name = item["data-sight-name"]
        #获取景点类别
        category = item["data-sight-category"]
        #获取景点城市
        city = item["data-districts"]
        #获取景点地址
        address = item["data-address"]
        #获取景点级别
        level = item.find("span",class_="level")
        level = level.text if level else ""
        #获取景点热度
        hot = item.find("span",class_="product_star_level")
        hot = hot.text if hot else ""
        #将数据写入到CSV文件中
        csv_writer.writerow([name,city,category,level,address,hot])
#开始执行爬虫
def start():
    for subject in subjects:
        for page in range(10):
            page+=1
            url = "https://piao.qunar.com/ticket/list.htm?keyword=热门景点&subject={}&page={}".format(subject,page)
            print(url)
            #获取指定url页面的html代码
            html = get_html_by_url(url)
            #解析html
            parse_html(html,subject)
            #每次下载数据之后,暂停3秒
            time.sleep(3)
if __name__ == "__main__":
    start()
#2.对数据进行清洗,将有效数据保存到CSV文件中
#3.通过Pandas对CSV数据进行分析

了解更多分析及数据抓取可查看:
http://cloud.yisurvey.com:9081/html/d8acf20b-342f-4806-8dcc-5e6a8d00881d.html?ly=csdn
本文转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请联系我们删除处理。
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值