最右评论爬虫

最右爬虫

爬取最右评论,不过需要时不时换一下headers的信息,容易过期。

import requests
import time
import random
import sys
import json
import os

def is_life_file(filename):
    """
    判断文件是否存在,存在,不存在则创建文件

    参数:
    - filename: 文件名
    """
    # 检查文件是否存在
    if os.path.exists(filename):
        # 如果文件存在,以追加模式打开文件,并写入内容
        with open(filename, 'a', encoding='utf-8') as file:
            print("文件已存在")
    else:
        # 如果文件不存在,以写入模式创建文件,并写入内容
        with open(filename, 'w', encoding='utf-8') as file:
            print("文件不存在,已创建。")


def fetch_data(url, headers, data, num_requests, output_file):
    is_life_file(output_file)
    for i in range(num_requests):
        try:
            response = requests.post(url, headers=headers, data=data)
            response.raise_for_status()  # 如果响应状态码不是 200,将会抛出异常
        except requests.exceptions.RequestException as e:
            print("Request failed:", e)
            print("Retrying...")
            continue  # 继续下一次请求
        json_data = response.json()
        if 'data' in json_data and 'posts' in json_data['data']:
            posts = json_data['data']['posts']
            mode = 'a'
            with open(output_file, mode, encoding='utf-8') as file:
                for post in posts:
                    if 'content' in post:
                        file.write("Content: " + post['content'] + "\n")
                    if 'review_data' in post and 'reviews' in post['review_data']:
                        reviews = post['review_data']['reviews']
                        if reviews is not None:  # 检查评论数据是否为None
                            for review in reviews:
                                if 'content' in review:
                                    file.write("Review: " + review['content'] + "\n")
                        else:
                            print("Reviews data is None. Skipping this request.")
                            continue  # 如果评论数据为None,则跳过当前请求
                    file.write("-------\n")
            print("Processed requests:", i + 1, "/", num_requests)  # 打印已处理的请求次数
            sys.stdout.write("\033[F")  # 光标上移一行
        else:
            print("No data found in response.")

        sleep_time = random.randint(10, 15)  # 随机休眠1到5秒
        time.sleep(sleep_time)  # 添加随机延时,避免频繁请求

    print("Data fetching completed.")




if __name__ == "__main__":
    # 请求的 URL
    url = 'https://www.izuiyou.com/planck/web/feed/rec'

    # 请求头部信息
    headers = {
        'Accept': 'application/json, text/plain, */*',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
        'Authorization': 'sign="dc2891c97831b6e1b4e66b0a63470caea7c234933ff84147c5d1a8432a40347e",timestamp="1712119647",nonce_str="7af0f286aa50ea69a452700c95c66933"',
        'Cache-Control': 'no-cache',
        'Content-Length': '2',
        'Content-Type': 'application/json',
        'Cookie': 'Hm_lvt_414bd23f4090657a5e2034429c836cca=1712107177; is_guest=1; web_token=TbKcNxguVeYEBSaYX8iPM-JqFmALLgiKOyBXqaWbt6fT72TeGL4IlhjWdriyjSkIijqf2IIa9sZpsI1sYoF5vPXuAdkPqCldfte7JHhtLbrBBXTq5cRO0TfAPrDPBpmTXnkV5; Hm_lpvt_414bd23f4090657a5e2034429c836cca=1712111547',
        'Origin': 'https://www.izuiyou.com',
        'Referer': 'https://www.izuiyou.com/',
        'Sec-Ch-Ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
        'Sec-Ch-Ua-Mobile': '?0',
        'Sec-Ch-Ua-Platform': '"Windows"',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'
    }

    # 请求体内容
    data = json.dumps({})

    # 设置请求次数
    num_requests = 10000

    # 输出文件名
    output_file = '最右评论.txt'

    # 调用函数获取数据并写入本地文件
    fetch_data(url, headers, data, num_requests, output_file)
  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论爬虫是一种用于获取网页上的评论数据的程序,使用Python语言编写的评论爬虫可以帮助我们自动化地收集和分析大量的评论信息。下面是一个简单的评论爬虫的介绍: 1. 确定目标网站:首先需要确定你想要爬取评论的目标网站。可以选择一些常见的社交媒体平台、电商网站或新闻网站等。 2. 分析网页结构:通过查看目标网站的源代码,了解评论所在的HTML标签和结构。通常评论会被包含在特定的标签中,比如<div>或<span>等。 3. 使用Python库进行爬取:Python提供了许多强大的库来进行网络爬虫开发,比如Requests、BeautifulSoup和Scrapy等。你可以使用这些库来发送HTTP请求获取网页内容,并解析网页结构提取评论数据。 4. 发送HTTP请求:使用Requests库发送HTTP请求,获取目标网页的HTML内容。可以使用GET或POST方法,根据目标网站的要求进行参数设置。 5. 解析网页内容:使用BeautifulSoup库解析HTML内容,根据之前分析的网页结构,提取出评论数据。可以通过选择特定的HTML标签、CSS选择器或XPath表达式来定位评论所在的位置。 6. 存储评论数据:将提取到的评论数据存储到本地文件或数据库中,以便后续的分析和使用。 7. 设置爬虫策略:为了避免对目标网站造成过大的负载或被封禁,需要设置合适的爬虫策略。可以设置请求间隔时间、使用代理IP、设置用户代理等方式来降低被检测到的概率。 8. 数据清洗和分析:获取到评论数据后,可以进行数据清洗和分析。可以使用Python的数据处理和分析库,如Pandas和NumPy,对评论数据进行统计、可视化和挖掘等操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值