Python 爬取马蜂窝

马蜂窝采集

注意:马蜂窝的数据不管评价数量多少,最终采集到的最多75条(网页上也只显示这么多),如下图所示:
马蜂窝

import requests
import time
import re
import os

poi = int(input("请输入你想要爬取的poi:"))

comment_poi_url = 'http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?'

headers = {
    'Referer': 'http://www.mafengwo.cn/poi/%d.html'%(poi),
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
}

def get_page():

    session = requests.session()
    try:
        for num in range(1, 5):
            requests_data = {
                'params': '{"poi_id":"%d","page":"%d","just_comment":1}' % (poi, num)
            }
            res = session.get(url=comment_poi_url, headers=headers, params=requests_data, timeout = 2)

            #encode编码 调用这个方法的对象是str类型 decode解码 调用这个方法的对象是bytes类型
            # print(type(res.text) is str) #True
            # print(res.text.encode().decode('unicode-escape').encode('utf-8','ignore').decode('utf-8'))
            # print(type(res.content) is bytes) #True
            # print(res.content.decode('unicode-escape').encode('utf-8','ignore').decode('utf-8'))
            page = res.text.encode().decode('unicode-escape').encode('utf-8','ignore').decode('utf-8')
            page = page.replace('\\/', '/').replace("<br />","").replace(" ","").replace("\n","").replace("\r","")
            #print(page)
            #这里可以不使用正则 使用 BeautifulSoup的findAll 之后.text获取内容
            date_pattern = r'<aclass="btn-comment_j_comment"title="添加评论">评论</a><spanclass="time">(.*?)</span>'
            json_dates = re.compile(date_pattern).findall(page)
            star_pattern = r'<spanclass="s-stars-star(\d)"></span>'
            json_stars = re.compile(star_pattern).findall(page)
            comment_pattern = r'<pclass="rev-txt">(.*?)</p>'
            json_comments = re.compile(comment_pattern).findall(page)
            for num in range(0, len(json_dates)):
                json_date = json_dates[num]
                json_star = json_stars[num]
                json_comment = json_comments[num]
                seq = json_date, json_star, json_comment
                name.write('\t'.join(seq) + '\n')

    except:
        print('获取网页失败')

if __name__ == '__main__':
    outfile = './Mafengwo_Comment.txt'
    name = open(outfile, 'w',encoding='utf-8')
    print('开始写入文件'.center(20,'-'))
    seq = '日期列表','星级列表','评论列表'
    name.write('\t'.join(seq) + '\n')
    get_page()
    name.close()
    print('写入完毕'.center(20,'-'))
    time.sleep(1.2)

携程采集

推荐使用:后裔采集器携程上进行数据采集,数据集比较完整,如下图所示:
携程
具体操作步骤,如下图:
操作步骤

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫是一种用于自动化获取网络上数据的技术,可以用来爬取各类网站的内容。马蜂窝是一个旅游网站,用户可以在其中发布旅游攻略、游记、评论等信息。如果想要爬取马蜂窝上的评论,可以通过Python爬虫来实现。 首先,需要分析马蜂窝网页的结构,找到包含评论信息的标签和类名等相关信息。可以利用浏览器开发者工具来查看网页源代码,寻找评论所在的HTML元素。 然后,使用Python的爬虫库,例如BeautifulSoup、Requests等,来发送HTTP请求获取网页内容,并解析网页。首先发送一个请求获取网页源代码,然后使用BeautifulSoup等库解析HTML,找到评论所在的标签和属性,进而提取出评论内容。 接下来,可以编写循环来遍历多个页面,因为马蜂窝的评论可能会分页展示。可以通过修改URL的参数来获取下一页的评论内容,并将获取到的评论数据添加到一个列表或文件中保存。 为了防止被网站封IP或其他反爬措施,可以模拟浏览器行为,例如添加User-Agent、增加访问时间间隔等来降低爬虫被发现的概率。 最后,可以根据需求对爬取的评论数据进行处理和分析,例如统计热门景点的评价情况、评论者的情感分析等。 需要注意的是,爬取网站数据要遵守法律法规和网站的使用规定,不得进行非法的行为,例如恶意攻击网站、侵犯用户隐私等。同时,为避免给网站造成过多的访问压力,可以控制爬取频率,适度使用缓存技术,尊重网站的服务器资源。 综上所述,通过Python爬虫可以很方便地实现马蜂窝评论的爬取,通过分析网页结构、发送HTTP请求、解析HTML等步骤,可以获取到评论数据并进行后续处理和分析。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值