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

运行效果:

相关文章
|
4天前
|
数据采集 JSON Java
Java爬虫获取微店快递费用item_fee API接口数据实现
本文介绍如何使用Java开发爬虫程序,通过微店API接口获取商品快递费用(item_fee)数据。主要内容包括:微店API接口的使用方法、Java爬虫技术背景、需求分析和技术选型。具体实现步骤为:发送HTTP请求获取数据、解析JSON格式的响应并提取快递费用信息,最后将结果存储到本地文件中。文中还提供了完整的代码示例,并提醒开发者注意授权令牌、接口频率限制及数据合法性等问题。
|
2天前
|
数据采集 存储 数据挖掘
深入剖析 Python 爬虫:淘宝商品详情数据抓取
深入剖析 Python 爬虫:淘宝商品详情数据抓取
|
5天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
9天前
|
数据采集 前端开发 API
SurfGen爬虫:解析HTML与提取关键数据
SurfGen爬虫:解析HTML与提取关键数据
|
1月前
|
机器学习/深度学习 人工智能 分布式计算
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
我的阿里云社区年度总结报告:Python、人工智能与大数据领域的探索之旅
118 35
|
24天前
|
数据采集 存储 机器学习/深度学习
数据的秘密:如何用大数据分析挖掘商业价值
数据的秘密:如何用大数据分析挖掘商业价值
48 9
|
1月前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。
|
1月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
83 7
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
92 3
|
3月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
194 6

热门文章

最新文章