python爬虫(二) 之 42号网汽车文章爬虫

python爬虫(二) 之 42号网汽车文章爬虫

今天在咸鱼上有个买家找我一个42号网汽车文章的爬虫,目前需求已经做完了,现在将这部分代码开源,供大家参考。爬虫能够抓取到网站上所有文章的数据,大概一小时左右就能将这个网站上的数据吃干抹尽。

import requests
import json
import csv
from lxml import etree
import timeclass How42:def __init__(self):self.article_list_pre_url = "https://api.42how.com/article?page="self.article_list_post_url = "&pageSize=10&orderBy=createTime&order=DESC&isProfessional=true&userType=0"self.start_page = 1self.end_page = 1000self.payload = {}self.article_list_headers = {'authority': 'api.42how.com','accept': 'application/json, text/plain, */*','accept-language': 'zh-CN,zh;q=0.9','cache-control': 'no-cache','cookie': '_ga_6GM2YNVSMY=GS1.1.1710298637.1.0.1710298637.60.0.0; _ga=GA1.1.383334843.1710298637','origin': 'https://www.42how.com','pragma': 'no-cache','referer': 'https://www.42how.com/','sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-site','source-type': '42web','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'}self.article_detail_headers = {'authority': 'www.42how.com','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','accept-language': 'zh-CN,zh;q=0.9','cache-control': 'no-cache','cookie': 'i18n_redirected=zh; _ga=GA1.1.383334843.1710298637; _ga_6GM2YNVSMY=GS1.1.1710302704.2.0.1710302704.60.0.0','pragma': 'no-cache','referer': 'https://www.42how.com/?l=article','sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'navigate','sec-fetch-site': 'same-origin','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'}def get_request(self, url, headers):response = requests.request("GET", url, headers=headers, data=self.payload)return response.textdef do_work(self):with open('42号.csv', 'w', newline='', encoding='utf-8-sig') as file:writer = csv.writer(file)csv_title = ["标题", "作者", "发布时间", "原文地址", "正文"]writer.writerow(csv_title)for current_page in range(self.start_page, self.end_page):print("================> 当前第" + str(current_page) + "页,共" + str(self.end_page) + "页 ============")article_list_url = self.article_list_pre_url + str(current_page)text = self.get_request(article_list_url, headers=self.article_list_headers)data = json.loads(text)["data"]self.write_page(writer, data)def write_page(self, writer, data):for item in data:# print(item["title"])# print(item["author"]["username"])# print(item["created_at"])# 获取文章详情内容# https://www.xchuxing.com/article/116378article_url = "https://www.42how.com/article/" + str(item["id"])text = self.get_request(article_url, headers=self.article_detail_headers)html = etree.HTML(text)# //*[@id="nice"]/div/div[1]result = html.xpath('normalize-space(//*[@id="nice"]/div/div[1])')print(result)# print(result)# time_struct = time.localtime(item["created_at"])# date = time.strftime("%Y-%m-%d %H:%M:%S", time_struct)row = [item["title"], item["author"]["nickname"], article_url, item["createTime"], result]writer.writerow(row)print("===========> 当前文章 " + article_url + " 写入完毕", )if __name__ == '__main__':how42 = How42()how42.do_work()

下面是程序的运行结果,最终抓取的数据放在同级目录下的42号.csv文件。

image-20240506221059646

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/833580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款功能强大的网络安全综合工具-PotatoTool

一、 简介 这款工具是一款功能强大的网络安全综合工具,旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能,包括解密、分析、扫描、溯源等,为用户提供了便捷的操作界面和丰富的功能选择。 二…

「YashanDB迁移体验官」Oracle向YashanDB迁移的丝滑体验

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

动手学深度学习——李沐(学习笔记)未完待续........

1.一直想明白的Linear什么意思 先定义一个模型变量net,它是sequential的一个实例,senquential类将多个单层串联在一起,给定输入数据的时候sequential输入数据,传入第二层以此类推。 全连接层就是包括完整的输入输出。全连接层在…

一起深度学习

CIFAR-10 卷积神经网络 下载数据集构建网络运行测试 下载数据集 batchsz 32cifar_train datasets.CIFAR10(data,trainTrue,transformtorchvision.transforms.Compose([torchvision.transforms.Resize((32,32)),torchvision.transforms.ToTensor()]),downloadTrue)cifar_train …

2024年华为OD机试真题-小明找位置-(C++)-OD统一考试(C卷D卷)

题目描述: 小朋友出操,按学号从小到大排成一列;小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n);学号为整数类型,队列规模<=10000; 输入描述: 1、第一行:输入已排成队列的小朋友的学号(正整数),以”,”隔开; …

个人消息22222222222222

项目名称: 建融家园住房租赁服务平台 项目介绍: 该系统主要包括2个部分前台和后台。前台负责展示和搜索房屋租赁信息。后台负责个人权限的管理、个人信息的管理和房源消息的管理发布。 系统架构&#xff1a;前台页面通过Http请求访问到zuul网关&#xff0c;网关通过底层的 Spri…

数据结构-线性表-应用题-2.2-6

从有序顺序表中删除所有其值重复的元素&#xff0c;使表中的元素的值均不同 有序顺序表&#xff0c;值相同的元素一定在连续的位置上&#xff0c;初始时将第一个元素是为非重复的有序表&#xff0c;之后依次判断后面的元素是否与前面的非重复表的最后一个元素相同&#xff0c;…

【Golang】使用Golang进行接口(Interface)编程

文章目录 前言一、Interface 接口解释二、代码实现三、总结 前言 在编程中&#xff0c;接口是一种强大的工具&#xff0c;它为我们提供了一种方式来定义和组织复杂的系统&#xff0c;而不需要知道系统的具体实现。在 Go 语言中&#xff0c;接口的概念被用得尤为广泛。本文将介…

【北京迅为】《iTOP-3588开发板快速烧写手册》-第3章 烧录完整升级固件update.img

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

STM32控制DS1302时钟模块获取实时时间

欢迎入群共同学习交流 时间记录&#xff1a;2024/4/30 一、知识点 &#xff08;1&#xff09;读写数据时序&#xff08;伪SPI协议&#xff09; 1.1 读写时序默认电平均为SCLK线低电平&#xff0c;CE线低电平 1.2 写数据&#xff0c;CE线拉高为高电平&#xff0c;开始传输数据…

在线教育系统怎么样的呢,音乐培训班学习音乐基本要求有哪些?

现在高考已经不仅仅是学科类就可以&#xff0c;还可以艺术类进行报考&#xff0c;音乐就是艺术类的一种&#xff0c;很多人学音乐都是为了报考更好的院校&#xff0c;音乐机构也越来越多&#xff0c;那培训班学习音乐基本要求有哪些&#xff1f; 一、基础乐理 音乐理论也称乐理…

服装行业如何巧借神秘顾客调查,洞悉门店运营真相

在竞争激烈的服装行业中&#xff0c;洞悉门店运营的真实情况、优化服务体验、提升品牌形象&#xff0c;已成为每个品牌不可或缺的核心任务。而神秘顾客调查&#xff0c;正是一种能够深入门店、精准揭示运营真相的高效手段。在这方面&#xff0c;群狼调研&#xff08;长沙员工满…

Flutter笔记:美工设计.导出视频到RIVE

Flutter笔记 美工设计.导出视频到RIVE - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28…

华为eNSP中型企业局域网网络规划设计(上)

敲半天一个闪退全™给我干没了呜呜呜&#xff0c;eNSP&#xff0c;wcnm&#xff01;wcnm&#xff01;wcnm&#xff01; →b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;下&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩←…

Vue从入门到实战Day01

一、Vue快速上手 1. vue概念 概念&#xff1a;Vue是一个用于 构建用户界面的 渐进式 框架 构建用户界面&#xff1a;基于数据动态渲染页面渐进式&#xff1a;循序渐进的学习框架&#xff1a;一套完整的项目解决方案&#xff0c;提升开发效率 优点&#xff1a;大大提升开发效…

springboot集成-Redis

Spring Boot项目中集成Redis&#xff0c;可以使用Spring Data Redis来简化操作。首先需要在pom.xml文件中添加Redis和Spring Data Redis的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

python 统计列表相同数据出现的次数

一、使用for循环 生成数据[randint(0,20) for _ in range(30)]得到 data [18, 11, 16, 18, 2, 15, 6, 6, 4, 8, 16, 19, 8, 17, 6, 14, 7, 1, 3, 2, 8, 17, 4, 6, 18, 11, 15, 16, 3, 3] 要生成的数据格式肯定是一个字典类型&#xff0c;比如{1:5,2:3,5:5}这样的数据&#x…

【Debug日记】albumentations包安装失败解决方案

直接pip安装pip install albumentations 报错&#xff1a; ERROR: Command errored out with exit status 1:command: D:\anaconda3\envs\pytorch\python.exe D:\anaconda3\envs\pytorch\lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py build_wheel C:\Users…

如何利用CAM350检查Gerber文件

利用CAM350检查Gerber文件 1、 打开CAM350软件。双击桌面上的CAM350图标以启动软件。 2、选择文件输入选项。在文件菜单中选择“输入”然后选择“自动输入”&#xff0c;因为Gerber文件通常是由EDA软件自动导出的&#xff0c;这样可以快速识别。 3、选择Gerber文件夹。在弹出的…

责任链模式和观察者模式

1、责任链模式 1.1 概述 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导…