AutoScraper——爬虫神器

2023-11-13

AutoScraper是一个自动化的爬虫工具,非常智能,而且使用简单便捷。AutoScraper 是使用 Python 实现的 Web 爬虫,兼容 Python 3,能快速且智能获取指定网站上的数据,在github上具有4.8K⭐️。github链接:https://github.com/alirezamika/autoscraper。
AutoScraper适合爬取反爬机制不强的页面,可以有效爬取数据。
下面开始介绍AutoScraper的使用过程。

1 安装

#autoscraper支持使用python3

# ①使用 pip 从 git 仓库安装最新版本 
# pip install git+https://github.com/alirezamika/autoscraper.git

#②从PyPI安装(推荐)
#pip install autoscraper

#③下载源码安装
#python setup.py install

2 AutoScraper使用

我对AutoScraper用法进行分类,并进行实际实现,以链家二手房信息为例,读者可自行学习修改即可。

2.1 单信息抓取

from autoscraper import AutoScraper  #导入

# 爬取的网址
url = 'https://bj.lianjia.com/ershoufang/'

# 输入想抓取的标题信息,此处以二手房发布信息标题为例
wanted_list = ["西山枫林一二期南排高楼层南北通透四居室"]  #随便找一个当前页面的标题

#创建AutoScraper对象
scraper = AutoScraper()

#建立爬虫,并进行信息爬取
result = scraper.build(url, wanted_list)
print('结果数量:',len(result))  #返回结果数量与当前页面标题数量一致
print('返回结果:',result)

在这里插入图片描述

2.2 多信息抓取

2.2.1 第一种方法

from autoscraper import AutoScraper  #导入

# 爬取的网址
url = 'https://bj.lianjia.com/ershoufang/'

# 输入想抓取的标题信息,此处以二手房发布信息标题和价格为例
wanted_list = ["西山枫林一二期南排高楼层南北通透四居室","745万"]

#创建AutoScraper对象
scraper = AutoScraper()

#建立爬虫,并进行信息爬取
result = scraper.build(url, wanted_list)
print("爬取结果:",result) #先返回全部的标题信息,再返回价格信息

在这里插入图片描述
这种方法爬取多标题信息,不容易对齐,因此介绍第二种方法。

2.2.2 第二种方法

from autoscraper import AutoScraper  #导入

## 爬取的网址
url = 'https://bj.lianjia.com/ershoufang/'

# 输入想抓取的标题信息,此处以二手房发布信息标题和价格为例
wanted_dict = {'title': ["有燃气正规一居室,户型好,格局方正"], 
               'price': ['398万']}

#创建AutoScraper对象
scraper = AutoScraper()

#建立爬虫,并进行信息爬取
scraper.build(url=url, wanted_dict=wanted_dict)
result = scraper.get_result_similar(url=url, grouped=True) #抓取相似数据,参数grouped设置返回结果是字典形式,默认是False。
print('返回结果:')
print(result)  #返回结果中rule_m3wz,rule_sgqv是规则名称,有可能同一种信息使用多种规则返回,选择其一即可。

在这里插入图片描述
将多种不同的返回结果分开方便利用DataFrame进行存储。

2.3 多页面抓取

当需要抓取多个页面,每个页面的布局相同,则爬取规则相同,保存设计的规则,然后应用到其它页面即可。

import pandas as pd
from autoscraper import AutoScraper  #导入

## 爬取的网址
url = 'https://bj.lianjia.com/ershoufang/'

# 输入想抓取的标题信息,此处以二手房发布信息标题和价格为例
wanted_dict = {'title': ["有燃气正规一居室,户型好,格局方正"], 
               'price': ['398万']}

#创建AutoScraper对象
scraper = AutoScraper()

#建立爬虫,并进行信息爬取
scraper.build(url=url, wanted_dict=wanted_dict)
result = scraper.get_result_similar(url=url, grouped=True) 
print("规则名称:",result.keys())
#返回结果中规则名称是随机生成的,一定注意,由于布局相同,所以其它页面的规则相同

#规则保存
scraper.keep_rules(['rule_4alo', 'rule_xt47']) #当一个标题给出多个规则时,选择一个规则
scraper.save('lianjie_rule')

#加载规则
lianjia_scraper = None
lianjia_scraper = AutoScraper()
lianjia_scraper.load('lianjie_rule')

df = pd.DataFrame()
#爬取多个页面
for n in range(1, 5):
    url_template = f'https://bj.lianjia.com/ershoufang/pg1/{n}'
    result = lianjia_scraper.get_result_similar(url=url_template, group_by_alias=True)
    df = pd.concat([df, pd.DataFrame(result)])
print("返回结果:")
print(df)

在这里插入图片描述
在这里插入图片描述
AutoScraper还有一些其它的细节,比如可以使用get_result_exact进行爬取等,详细信息可参考autoscraper-examples.md
如果有读者想要详细了解AutoScraper具体的代码,可以留言告知,作者将会出一期代码解读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AutoScraper——爬虫神器 的相关文章

  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 您可以在 Python 类型注释中指定方差吗?

    你能发现下面代码中的错误吗 米皮不能 from typing import Dict Any def add items d Dict str Any gt None d foo 5 d Dict str str add items d f

随机推荐

  • 蓝桥杯 基础训练—数列排序  给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200

    问题描述 给定一个长度为n的数列 将这个数列按从小到大的顺序排列 1 lt n lt 200 输入格式 第一行为一个整数n 第二行包含n个整数 为待排序的数 每个整数的绝对值小于10000 输出格式 输出一行 按从小到大的顺序输出排序后的数
  • Android屏幕适配(使用ConstraintLayout),2021年Android高级面试题总结

    2 然后拉一个imageView进入布局 选择自己要显示的图片 3 将此imageView的上下参照物设置为两参照线 并将左右参照物设置为父容器 将其宽设置为wrap content 高设置为mach constraint 也就是0dp 这
  • NVIDIA vGPU License服务器安装过程

    在vGPU场景下 NVIDIA vGPU License Server 是一个很重要的组件 一个vGPU虚拟机没有正常获取License的时候 功能会受到很大限制 因此正式生产环境或者POC测试环境中都建议搭建 在之前的文章介绍过VMwar
  • 【Ini格式文件】Ini格式文件的读写

    前言 在实际工作中 常常需要读写ini格式的文件 在Gitee上找到一份开源的代码 MIT证书 其使用了文件读写的标准库函数 但我当前的嵌入式环境对文件读写的标准库函数的支持存在问题 当调用文件读写的标准库函数时会导致系统宕机 为了解决这问
  • 如何与西门子200 PLC建立连接

    更多关于西门子S7 200PLC内容请查看 西门子200系列PLC学习课程大纲 与西门子200 PLC建立连接很简单 分为以下几步 1 给S7 200PLC通电 按下图1 1所示连接PLC端口 然后给PLC供电 有直流24V和交流220V两
  • 笔记本突然无线和有线都不能使用

    记录下 昨天突然电脑wifi和插网线均不能上网 或者说没有任何反应 后 查看驱动情况发现带黄色感叹号 于是 去官网下载各种驱动 或者还原驱动到最初版本均不能解决问题 遂认为有可能网卡坏了 然后JD买了外置网卡 也不能解决 后采用驱动精灵中找
  • casset setup驱动下载_如何安装驱动程序

    驱动程序到底是什么 这是一个跟自然世界很难找到对照的事物 实在要找的话好比是翻译 电脑的硬件设备跟软件之间的翻译 例如摄像头 需要安装驱动程序才能工作 摄像头作为硬件能识别的是很底层的硬件指令 而电脑操作系统应用软件处于系统的上层 他们之间
  • JAVA——形参和返回值

    形参和返回值 1 1 类名作为形参和返回值 方法的形参是类名 其实需要的是该类的对象 方法的返回值是类名 其实返回的是该类的对象 1 2 抽象类名作为形参和返回值 方法的形参是抽象类名 其实需要的是该抽象类的子类对象 方法的返回值是抽象类名
  • startThreadPool调用流程

    ProcessState self gt startThreadPool 1 startThreadPool 的主要作用是 ProcessState cpp 调用spawnPooledThread true 2 spawnPooledThr
  • CSND文章阅读数自动增加

    原理 通过不断刷新网页来实现阅读数增加 import time from selenium import webdriver 自动刷新网页 def refresh url 驱动要自己去下载 具体方法CSDN一堆 下载谷歌浏览器驱动后需要把驱
  • Python 第2章 基本数据类型课后习题参考答案

    第2章课后习题参考答案 一 单选题 Python 中 0 和 0 0 的区别是 答案为B A 大小不同 B 类型不同 C 进制不同 D 完全一样 以下不是 Python 数据类型名称的是 答案为D A int B float C list
  • 深度学习可视化工具FiftyOne介绍

    FiftyOne是用于构建高质量数据集和计算机视觉模型的开源工具 由Python语言实现 最新发布版本为v0 14 0 它的License是Apache 2 0 源码位于https github com voxel51 fiftyone F
  • 积分商城能给商家带来哪些帮助?

    说起积分商城 不少人都大概接触过 甚至使用过 最常见的 例如我们使用的手机号码就有积分商城的存在 通过充值话费 会累积一定的消费积分 而这些积分通常在手机营业厅APP上可以查询到其作用 早期的积分商城玩法较少 如今已经变得很成熟 常见的有积
  • python里object是什么类型_Python object类中的特殊方法

    python版本 3 8 class object The most base type del obj xxx或delattr obj xxx 时被调用 删除对象中的一个属性 def delattr self args kwargs re
  • (Ubuntu Linux)Conda安装Pytorch2.0-Python3.8-Cuda11.7

    Ubuntu Linux Conda安装Pytorch2 0 Python3 8 Cuda11 7 一 安装Anaconda 安装包下载 https repo anaconda com archive 1 选择合适的安装包 每个版本中对应不
  • AppScan安全漏洞报告

    1 会话cookie 中缺少HttpOnly 属性 修复任务 向所有会话cookie 添加 HttpOnly 属性 解决方案 过滤器中 Java代码 HttpServletResponse response2 HttpServletResp
  • Linux-DM9000C网卡移植(详解)

    上一节 我们学习了 网卡驱动介绍以及制作虚拟网卡驱动 http www cnblogs com lifexy p 7763352 html 接下来本节 学习网卡芯片DM9000C 如何编写移植DM9000C网卡驱动程序 1 首先来看DM90
  • spring boot 的 ApplicationContext 及 getbean

    在spring中 我们通过如下代码取得一个spring托管类 ApplicationContext ac new FileSystemXmlApplicationContext applicationContext xml ac getBe
  • 红日安全vulnstack-ATT&CK实战系列 红队实战(四)

    一 介绍 下载地址http vulnstack qiyuanxuetang net vuln detail 6 strusts漏洞利用phpmyadmin getshell tomcat 漏洞利用 docker逃逸 ms14 068 ssh
  • AutoScraper——爬虫神器

    AutoScraper是一个自动化的爬虫工具 非常智能 而且使用简单便捷 AutoScraper 是使用 Python 实现的 Web 爬虫 兼容 Python 3 能快速且智能获取指定网站上的数据 在github上具有4 8K githu