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

运行效果:

相关文章
|
7天前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
3天前
|
SQL 分布式计算 DataWorks
MaxCompute MaxFrame评测 | 分布式Python计算服务MaxFrame(完整操作版)
在当今数字化迅猛发展的时代,数据信息的保存与分析对企业决策至关重要。MaxCompute MaxFrame是阿里云自研的分布式计算框架,支持Python编程接口、兼容Pandas接口并自动进行分布式计算。通过MaxCompute的海量计算资源,企业可以进行大规模数据处理、可视化数据分析及科学计算等任务。本文将详细介绍如何开通MaxCompute和DataWorks服务,并使用MaxFrame进行数据操作。包括创建项目、绑定数据源、编写PyODPS 3节点代码以及执行SQL查询等内容。最后,针对使用过程中遇到的问题提出反馈建议,帮助用户更好地理解和使用MaxFrame。
|
3天前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
22 3
|
14天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
15天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
24天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
25天前
|
数据采集 安全 定位技术
使用代理IP爬虫时数据不完整的原因探讨
在信息化时代,互联网成为生活的重要部分。使用HTTP代理爬取数据时,可能会遇到失败情况,如代理IP失效、速度慢、目标网站策略、请求频率过高、地理位置不当、网络连接问题、代理配置错误和目标网站内容变化等。解决方法包括更换代理IP、调整请求频率、检查配置及目标网站变化。
58 11
|
22天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
58 2
|
2月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
127 6
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
270 4