python爬虫去哪儿网上爬取旅游景点14万条,可以做大数据分析的数据基础

简介: 本文介绍了使用Python编写的爬虫程序,成功从去哪儿网上爬取了14万条旅游景点信息,为大数据分析提供了数据基础。

从去哪儿网上爬取旅游景点的相关信息。主要包括以下几个步骤:

  1. 导入所需的库:BeautifulSoup用于解析网页内容,pandas用于处理数据,requests用于发送网络请求,re用于正则表达式匹配。

  2. 定义函数crawer_travel_url_content(url):根据给定的URL地址发送网络请求,获取网页内容并返回BeautifulSoup对象。

  3. 定义函数removenone(mylist):移除列表中的空值。

  4. 定义函数regnum(s):从字符串中提取数值。

  5. 定义函数crawer_travel_attraction_url(url):根据给定的城市URL,获取该城市旅游景点的总数maxnum。然后根据每页10条的规则,计算出需要爬取的页数page。遍历每一页的URL,解析页面内容,并提取景点的各种信息。将提取的信息写入CSV文件中。

  6. 定义景点信息的列名数组clums

  7. 创建CSV文件,并写入列名。

  8. 读取包含城市链接的CSV文件。

  9. 遍历城市链接列表,调用crawer_travel_attraction_url(url)函数进行爬取。

主要代码如下:

def crawer\_travel\_url\_content(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
    req = requests.get(url, headers=headers)
    content = req.text
    bsObj = BeautifulSoup(content, 'lxml')
    return bsObj
def removenone(mylist):#移除参数中空值的函数
    while '' in mylist:
        mylist.remove('')
    return mylist
def regnum(s):#提取爬取到的字符串中的数值
    mylist = re.findall(r'\[\\d+\\.\\d\]\*', s)
    mylist = removenone(mylist)
    return mylist
def crawer\_travel\_attraction\_url(url):
    # 该城市最大景点数
    maxnum = crawer\_travel\_url\_content(url + '-jingdian').find('p', {'class': 'nav\_result'}).find('span').text
    # 提取数字
    maxnum = int(''.join(\[x for x in maxnum if x.isdigit()\]))
    print(maxnum)

    url = url + '-jingdian-1-'

    # 这里取top10景点 每页10条 page从1开始
    page = math.ceil(maxnum/10)
    if page>200:
        page=200
    else:
        page = math.ceil(maxnum/10)
    for i in range(1, page):
        url1 = url + str(i)
        bsObj = crawer\_travel\_url\_content(url1)
        dw=bsObj.find\_all('div',class\_='ct')
        dq=bsObj.find\_all('li', {'class': 'item pull'})
        if len(dq)<3:
            sheng=dq\[1\].find('a').text
            city=dq\[1\].find('a').text
        else:
            sheng = dq\[1\].find('a').text
            city = dq\[2\].find('a').text
        for i in dw:
            cat = \[\]
            name=i.find('span',class\_='cn\_tit').text
            wenzhang\_num=i.find('div',class\_="strategy\_sum").text
            pls=i.find('div',class\_="comment\_sum").text
            pf=regnum(i.find('span',class\_="cur\_star").get('style'))\[0\]
            zhanbi=i.find('span',class\_='sum').text
            jisnjir=i.find('div',class\_='desbox').text
            cat.append(sheng)
            cat.append(city)
            cat.append(maxnum)
            cat.append(name)
            cat.append(wenzhang\_num)
            cat.append(pls)
            cat.append(pf)
            cat.append(zhanbi)
            cat.append(jisnjir)
            print(sheng,city,name,wenzhang\_num,pls,pf,zhanbi,jisnjir)
            with open('去哪儿网城市景点汇总1.csv', 'a', encoding='utf-8-sig', newline='') as f:
                a = csv.writer(f)
                a.writerow(cat)
                f.close()
        print(url1+'已采集完成')
    return True
import csv
clums = \['省份', '城市','景点数','景点名','文章数','评论数','评分','占比','简介'\]
with open('去哪儿网城市景点汇总1.csv', 'w', encoding='utf-8-sig', newline='') as f:
    a = csv.writer(f)
    a.writerow(clums)
    f.close()
df=pd.read\_csv('去哪儿网城市.csv',encoding='utf-8')
for i in df\['链接'\].tolist():
    try:
        crawer\_travel\_attraction\_url(i)
    except:
        pass

运行效果:

相关文章
|
15天前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
16天前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
14天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
14天前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
15天前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
7月前
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
492 6

推荐镜像

更多