使用普通爬虫和协程爬虫爬取汽车之家所有文章的基础数据

汽车之家各种车型参数爬虫 汽车之家各种车型参数爬虫 结果如下: 本案例使用jupyter notebook,用到requests,BeautifulSoup,lxml,urlencode ,pandas五个库,爬取下来的数据如下图所示: 详细过程: 整个过程分成三个部分: 1,爬取汽车之家各个品牌(譬如奥迪)汽车对应的链接 2,爬取每一个品牌下各个汽车系列(譬如奥迪A4)的链接 3,使用2得到的链接爬取每个汽车系列的参... 阅读详情

普通版本:

from time import sleep
from lxml import etree
import requests
import json
import random
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}

count = 0
dic = {"foo": []}

# 需要自己配置代理地址
# poxys = [
#     {"HTTP": "117.88.5.253:3000"},
# ]

start = time.time()

# 可以在这里配置需要爬取的页码数
for i in range(1, 11):

# 使用代理
#    a = random.choice(poxys)
#    page_text = requests.get(url="https://www.autohome.com.cn/all/%s/" % i, #headers=headers, proxies=a)
# 不使用代理
    page_text = requests.get(url="https://www.autohome.com.cn/all/%s/" % i, headers=headers)

    page_text.encoding = 'gbk'

    tree = etree.HTML(page_text.text)

    ul_list = tree.xpath('//*[@id="auto-channel-lazyload-article"]/ul')

    for ul in ul_list:
        count += 1
        print(count)
        for li in ul:
            dic1 = {}
            title_list = li.xpath('./a/h3/text()')
            if title_list:
                title = title_list[0]
                print(title)
                url = li.xpath('./a/@href')[0]
                content = li.xpath('./a/p/text()')[0]
                img_url = li.xpath('./a/div[1]/img/@src')[0]
                sort = li.xpath('./a/@href')[0].split("/")[3]


                dic1["title"] = title
                dic1["url"] = url
                dic1["content"] = content
                dic1["img_url"] = img_url
                dic1["sort"] = sort

                dic["foo"].append(dic1)

    # 保存相关数据
    # if count == 20 or i == 10:
    #     fp = open(f'{i}.txt', 'w')
    #     print('正在写入文件')
    #     fp.write(json.dumps(dic, indent=4))
    #     print('写入成功')
    #     fp.close()
    #
    #     count = 0
    #     dic = {"foo": []}


end = time.time()
print(end-start)


 

协程版本:

# date : 2020/5/19 15:00

from gevent import monkey
# 从gevent库里导入monkey模块。
monkey.patch_all()
# monkey.patch_all()能把程序变成协作式运行,就是可以帮助程序实现异步。
import gevent,time,requests
# 导入gevent、time、requests
from gevent.queue import Queue
# 从gevent库里导入queue模块
from lxml import etree
import random
import json

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}

# 如果需要代理,可以在这里配置
# poxys = [
#    {"HTTP": "117.88.5.253:3000"},
# ]



start = time.time()
# 记录开始时间

# 要爬取的网站
urls = []
for i in range(2600, 5200):
    urls.append('https://www.autohome.com.cn/all/%s/' % i)

work = Queue()
# 创建队列对象,并赋值给work。
for url in urls:
    work.put_nowait(url)
    # 用put_nowait()函数可以把网址都放进队列里

def crawler():
    dic = {"foo": []}

    while not work.empty():
        # 当队列不是空的时候,就执行下面的程序。
        url = work.get_nowait()
        # 用get_nowait()函数可以把队列里的网址都取出。
        
        # 用代理抓取网站内容
        # a = random.choice(poxys)
        # page_text = requests.get(url, headers=headers, proxies=a)

        # 不用代理抓取网站内容
        page_text = requests.get(url, headers=headers)

        print(url, work.qsize(), page_text.status_code)
        # 打印网址、队列长度、抓取请求的状态码

        page_text.encoding = 'gbk'

        tree = etree.HTML(page_text.text)

        ul_list = tree.xpath('//*[@id="auto-channel-lazyload-article"]/ul')

        for ul in ul_list:
            for li in ul:
                dic1 = {}
                title_list = li.xpath('./a/h3/text()')
                if title_list:
                    title = title_list[0]
                    url = li.xpath('./a/@href')[0]
                    content = li.xpath('./a/p/text()')[0]
                    img_url = li.xpath('./a/div[1]/img/@src')[0]
                    sort = li.xpath('./a/@href')[0].split("/")[3]

                    dic1["title"] = title
                    dic1["url"] = url
                    dic1["content"] = content
                    dic1["img_url"] = img_url
                    dic1["sort"] = sort

                    dic["foo"].append(dic1)
                    # print(title)


    fp = open('qczj(2600-5199).txt', 'w')

    fp.write(json.dumps(dic, indent=4))

    fp.close()




task_list = []
# 创建空的任务列表

for i in range(5):
    # 相当于创建了4个爬虫
    task = gevent.spawn(crawler)
    # 用gevent.spawn()函数创建执行crawler()函数的任务。
    task_list.append(task)
    # 往任务列表添加任务

gevent.joinall(task_list)
# 用gevent.joinall方法,执行任务列表里的所有任务,就是让爬虫开始爬取网站。

end = time.time()
# 结束时间

print(end-start)
# 总用时

 

python爬虫小案例——汽车之家 为了更深入的学习爬虫,今天来了解下bs4的使用和实践,当然解析网页不止只有bs4的BeautifulSoup可以做到,还有xpath语法和正则表达式。本期是初步的了解BeautifulSoup模块的使用,欢迎初学者学习本期内容。这里需要注意的是使用bs4语句获取的标签内容是bs4的类型,不是列表类型,所以使用了强制转换成列表【list()】.拓展:目标网站结构改变。 阅读详情

相关推荐

Python爬虫实战:如何爬取汽车之家报价信息

本文通过实战介绍了如何使用Python编写爬虫,抓取汽车之家网站的车型、价格、配置等信息。在爬虫实现过程中,我们使用了requests库来发送HTTP请求,使用解析HTML页面,提取嵌入的JSON数据,并将数据存储到CSV文件中。同时,我们还介绍了如何使用反爬虫策略(如随机User-Agent、请求延时、代理池等)来规避反爬虫机制,确保爬虫的稳定性。

2201_76125261的博客 1594

Python爬虫:汽车之家爬虫(完整代码)

Python爬虫:汽车之家爬虫(完整代码)

weixin_42108731的博客 1万+

python3爬虫系列18之多进程爬取2009-2019十年高考分数线

python3爬虫系列17之多进程爬取2009-2019十年高考分数线 1. 前言 上一篇文章是 python3爬虫系列16之爬虫增速多进程,进程池的用法(白话解释),在里面我们知道了用来爬虫加速的多进程和进程池的创建使用方式。 而之前的多线程爬虫例子python3爬虫系列15之多线程爬取汽车之家批量下载图片,看到python中使用多线程好像并不是很快。 最后得出的结论是 在 Python 里面推...

空空说技术的博客 2236

python爬虫——汽车之家数据

相信很多买车的朋友,首先会在网上查资料,对比车型价格等,首选就是“汽车之家”,于是,今天我就给大家扒一扒汽车之家的数据: 一、汽车价格: 首先获取的数据是各款汽车名称、价格范围以及最低指导价: def get_oa_price(self): try: oa_price_data_list=[] for page in range(1,27): oa_price_api = f"https://p

weixin_45788869的博客 5850

手把手教你用Boot-Repair快速修复Ubuntu启动分区缺失(附详细命令行步骤)

本文详细介绍了如何使用Boot-Repair工具快速修复Ubuntu启动分区缺失问题,包括诊断、应急准备、自动修复和手动命令操作。通过grub rescue模式下的关键命令和Boot-Repair的图形界面操作,帮助用户高效解决启动分区故障,确保系统恢复正常运行。

weixin_29229989的博客 562

代码实现 —— 基于 STM32 的可见光通信系统课程设计

基于STM32F103ZET6,源码如需移植,需要修改定时器捕获通道引脚,及定时器,如果你也有这个课设任务,希望对你有所帮助。

不善挽留 1万+

2.7 汽车之家口碑爬虫

2.7 汽车之家口碑爬虫 7 汽车之家口碑爬虫 需求分析 前端js反爬虫措施分析 1问题描述 2解决方法 爬虫框架 1 获取所有车型的id 2本爬虫采用scrapy框架分析所需要的评论信息为 3将常用设置写入sttings中 结果展示 1.需求分析 因项目需求,要爬取汽车之家的口碑数据进行下一步分析。 但是普通的爬虫软件(如八爪鱼、火车头、神箭手)无法爬取评论(...

和而不流 1万+

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 905

爬虫学习 | 03 爬虫静态网页的爬取(1)

学习的资料是:python chatgpt 网络爬虫从入门到精通。

m0_74113296的博客 2815

【tips】在PyCharm中安装opencv图文版详细教程

pip如下图所示,左边的蓝色图标就是终端。点开终端后,键入命令,按下回车后就开始下载了。如果你更喜欢图形化操作,可以在 PyCharm 中直接安装:。点击右上角的 +按钮(添加包)。搜索或,点击。

zhousanguhe的博客 6740

android mtk camera如何自定义默认拍照与录像分辨率

本文详细解析了在Android MTK平台上自定义相机默认拍照与录像分辨率的方法。通过分析Camera2应用默认选择逻辑,定位并修改PictureSize.java与VideoQualityCaptureRequestConfig.java中的关键代码,实现绕过系统智能选择,强制指定最高或特定分辨率。文章还提供了进阶的可配置化方案与验证避坑指南,帮助开发者精准控制相机行为。

weixin_29194817的博客 430

Python爬虫获取“房天下“房价数据(下)

上期文章讲到了通过requests、BeautifulSoup库搭建简单的爬虫来获取“房天下”的基础房价数据. 如果你没有看上期, 请务必先阅读上期内容(传送门), 基础房价数据中我们只获取到了[“户型”, “面积”, “楼层”, “朝向”, “建成时间”, “经纪人”, “地址”, “单价”]这些指标, 尽管这些指标对样本有了一个初步、大概的描述, 但它们仅限于描述统计, 缺少协变量无法进一步探究房价的影响因素、时空变动、组成成分等等. 所以我们还需要得到某一在售商品房周边的情况, 例如下表所示的内容

qq_44638724的博客 4200

深度学习在地质勘探中的应用:使用Python构建卷积神经网络进行地震数据分析

在本文中,我们介绍了如何利用深度学习技术,特别是卷积神经网络(CNN),来处理和分析地震数据。我们使用了Python编程语言和TensorFlow框架构建了一个CNN模型,并使用地震数据进行了训练和评估。在本文中,我们将探讨如何利用深度学习技术,特别是卷积神经网络(CNN),来处理和分析地震数据。首先,我们需要获取地震数据集。通过本文的介绍,希望您能对深度学习在地质勘探领域的应用有更深入的了解,并能够应用这些技术来解决实际问题。在准备好地震数据和构建CNN模型后,我们需要将数据分为训练集和测试集。

斌擎科技 1471

【Python爬虫】01-Python爬虫概述

Python爬虫 概述

Tiger_shl的博客 1669

Python爬虫实战:基于最新技术栈的政府招标采购数据抓取与分析

对于企业、研究人员和数据分析师来说,能够高效地获取这些数据意味着可以获得宝贵的商业洞察和市场先机。随着反爬技术的不断升级和网站结构的日益复杂,传统的爬虫方法已经难以满足需求。我们将采用Selenium、Playwright等现代浏览器自动化工具,结合Scrapy框架和异步请求库,构建一个能够应对各种反爬措施的强大爬虫系统。Playwright是微软开发的浏览器自动化工具,支持Chromium、WebKit和Firefox,比Selenium更快速、更稳定。

2201_76125261的博客 1310

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

基于深度学习+爬虫+数据可视化的新能源汽车推荐系统的设计与实现

今天带来的是基于深度学习+爬虫+数据可视化的新能源汽车推荐系统的设计与实现。该系统采用Python爬虫技术从懂车网获取新能源汽车数据,经Pandas清洗后存储于MySQL数据库。基于TensorFlow框架和协同过滤算法,系统分析用户浏览、收藏等行为特征,实现个性化车型推荐。采用Django+Vue前后端分离架构,为用户提供智能推荐、车型查询、互动评论和数据可视化功能,同时为管理员提供数据调度、内容管理等后台模块。

qq_15801219的博客 677

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

机器学习实战项目:Python+Flask 汽车销量分析可视化系统(requests爬车主之家+可视化 源码+文档)✅

机器学习实战项目:Python+Flask 汽车销量分析可视化系统(requests爬车主之家+可视化 源码+文档)✅

B站计算机毕业设计之家的博客 1500

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汽车之家评论

2.7 汽车之家口碑爬虫 7 汽车之家口碑爬虫 需求分析 前端js反爬虫措施分析 1问题描述 2解决方法 爬虫框架 1 获取所有车型的id 2本爬虫采用scrapy框架分析所需要的评论信息为 3将常用设置写入sttings中 结果展示 1.需求分析 因项目需求,要爬取汽车之家的口碑数据进行下一步分析。 但是普通的爬虫软件(如八爪鱼、火车头、神箭手)无法爬取评论(该公司采取了反爬虫措施)。 经分...

yzzbestcoder 1589

【爬虫实战】使用Python和JS逆向获取易车网汽车参数详情

有的网站请求参数或者URL是明文的,但是有些是加密后的。接下来以易车网为例,巩固一下逆向思路。今天分析JS逻辑的时候在md5这一块卡了很久,主要原因如下;起初看到进行MD5处理的时候怀疑了一下是不是基础的MD5,有没有进行特殊处理。为了图省事,直接问的GPT。结果这家伙输出了和控制台不一致的值,所以就当成JS特殊处理了。因此就把相关的函数单独拉出来进行处理,生成Sign值后传给python。但最后一直校验失败,百思不得其解。后来又多次反复查看使用Python生成MD5值后才发现了GPT的问题。

u013046615的博客 1万+

《Python爬虫项目实战》资源文件介绍

《Python爬虫项目实战》资源文件介绍 去发现同类优质开源项目:https://gitcode.com/ 此资源文件集成了多个Python爬虫项目实战案例,内容涵盖从基础爬虫到复杂多线程爬虫,以及使用框架的进阶爬虫实例,旨在帮助用户理解和掌握网络爬虫技术的实际应用。 内容列表 普通爬虫 - 爬取电影天堂最新的电影数据。 XPath爬取 - 获取腾讯招聘的职位数据。 XPath爬取 - 从中国天...

gitblog_06792的博客 250

基于Python爬虫与NLP的信息聚合系统构建实战

信息聚合是数据挖掘领域的核心应用之一,其原理是通过自动化技术从多个分散的公开数据源中采集、提取并整合特定主题的结构化信息。这项技术的核心价值在于能够高效解决信息过载与数据孤岛问题,将非结构化的网络内容转化为可供分析与决策的标准化数据。在工程实践中,通常采用网络爬虫技术进行数据采集,结合自然语言处理(NLP)方法进行关键信息提取,最终通过数据清洗与排序算法输出有序结果。典型的应用场景包括垂直领域资讯监控、市场情报收集以及内容创作素材挖掘。本文将以构建一个“年轻表主”信息追踪系统为例,详细拆解如何利用Pytho

weixin_33139275的博客 1110

机器学习:基于 Flask + 协同过滤的二手车数据分析与推荐系统 python汽车数据分析可视化系统 协同过滤推荐算法 二手车推荐系统 汽车推荐系统 爬虫技术(源码+文档)✅

机器学习:基于 Flask + 协同过滤的二手车数据分析与推荐系统 python汽车数据分析可视化系统 协同过滤推荐算法 二手车推荐系统 汽车推荐系统 爬虫技术(源码+文档)✅

B站计算机毕业设计之家的博客 1148

程序汪6万接的汽车配件APP项目,开发周期40天

本文章来自程序汪背后的私活小团队,开发汽车配件交易APP(类似咸鱼),希望把这些真实案例分享出来,大家能学到点东西,比如苹果APP怎么逃苹果税,开发APP用什么比较快捷,爬数据要注意什么等等B站【我是程序汪】程序汪6万接的汽车配件APP项目,开发周期40天。

u011091199的博客 1381

躲在被窝里偷偷学爬虫(2)---UA伪装及正则解析

一, U-A伪装 接着上一篇:躲在被窝里偷偷学爬虫—概论及初始来处理被某度反爬打脸开始! 汽车之家是没有任何反爬虫措施的,但某度有,如果还是按照爬汽车之家的老套路,就会反而被某度所安排!按f12进入开发者工具,仔细观察一下 再滑到Headers最下面 那么将上图中的User-Agent拿到代码中,看看能不能解决问题 # !/usr/bin/env python # -*- coding:utf-8 -*- # @Author:HePengLi # @Time:2021-03-22 import req

骑着哈哥去取经!!! 1115

普通人如何通过技术变现,副业月入过万?

普通人如何通过技术变现,副业月入过万?

Java癫疯的博客 1102
上一篇: 一些网站的反爬机制(持续补充中)
下一篇: 单例模式有什么作用
SpringBears
博客等级 码龄9年 2粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值