5分钟学会Python爬虫神器autoscraper——自动化爬虫必备

  • 爬虫神器autoscraper介绍
  • 安装
  • 使用
  • 批量抓取
  • 查看结果

爬虫神器autoscraper介绍

今天给大家介绍一个非常智能的python爬虫库,5分钟就能上手,简直就是爬虫神器。它的名字就是autoscraper,GitHub主页是https://github.com/alirezamika/autoscraper ,截止2021年5月16日,star有3.5k,非常受欢迎。

安装

# 首先安装autoscraper,目前只支持python3 # 使用 pip 从 git 仓库安装最新版本
# pip install git+https://github.com/alirezamika/autoscraper.git # 下载源码安装
# python setup.py install # 从 PyPI 安装(推荐)
# pip install autoscraper

使用

比如我们要抓取链家上房屋信息数据,标题,销售价格,单价,房屋结构信息,网址等信息。

如下:

# 单个信息抓取from autoscraper import AutoScraper# 抓取的网址
url = 'https://bj.lianjia.com/ershoufang/pg2/'# 输入你想抓取的标题信息(我们先随便写一个标题)
wanted_list = ["江南山水 2室1厅 南 北"]scraper = AutoScraper()
result = scraper.build(url, wanted_list)# 这样就把页面里面所有的标题都抓下来了
result['江南山水 2室1厅 南 北','佳和园南北通透大三居,四个阳台全明格局,满五唯一','满5年眼镜户型,南北双通透,两梯两户,无遮挡','公元九里四居室洋房,次顶层,一天未住。','前半壁街 南北两居室 诚意出售','名都园   别墅区带电梯南北三居室   有钥匙看房随时','石景山五芳园 精装两居室 低楼层','御景园小区  东北向三居室  房子看房方便  看国贸','牡丹园马甸月季园小区优质三居室','二环里 东城区 两居室 采光好 无遮挡 满五年唯一','大屯里 东西三居 看房随时 诚意出售','华纺易城 满五年 东区中间位置 观景房 安静 南北通透','满五年唯一,有产权车位单独出售,中间单元,不临街','此房满五年唯一,格局好,明厨明卫,近地铁,近公园','阜光里小区  有电梯  满五年  户型方正','柏林爱乐四期 2室1厅 南 北','正阳小区 2室1厅 东','电信宿舍六层板楼带电梯 前后阳台 无遮挡','满五唯一商品房   四环内  正规三居室','金隅悦和园 正对小区花园 南向两居室采光充足','满五年唯一,房屋状况保持好,看房提前约。','郁花园一里 满五年唯一 中间楼层两居 看房随时','清河后屯路32号院南北通透三居室','八角北里中间层 南北通透 看房随时','杨庄北区 3室1厅 南 北','冬季星空 南北通透三居室 满五唯一','东三环 朝阳区 伯宁花园西北向三居室','全明格局,南北双通透,宜居H户型,室内2.8米层高','富东嘉园 2室1厅 南 北','安苑北里精装修两室两厅,视野好,采光好']
# 多个信息抓取,可以使用dict字典来存要抓取的信息from autoscraper import AutoScraperurl = 'https://bj.lianjia.com/ershoufang/pg2/'# 输入你想抓取的信息(我们先写几个)
wanted_dict = {'title': ["江南山水 2室1厅 南 北"], 'intro': ['2室1厅 | 100.8平米 | 南 北 | 精装 | 6层 | 2012年建 | 板楼'],'total_price': ['585万']}scraper = None
scraper = AutoScraper()
scraper.build(url=url, wanted_dict=wanted_dict)result = scraper.get_result_similar(url=url, grouped=True)
result{'rule_nf8n': ['江南山水 2室1厅 南 北','佳和园南北通透大三居,四个阳台全明格局,满五唯一','满5年眼镜户型,南北双通透,两梯两户,无遮挡','公元九里四居室洋房,次顶层,一天未住。','前半壁街 南北两居室 诚意出售','御景园小区  东北向三居室  房子看房方便  看国贸','石景山五芳园 精装两居室 低楼层','名都园   别墅区带电梯南北三居室   有钥匙看房随时','牡丹园马甸月季园小区优质三居室','清河后屯路32号院南北通透三居室','满五年唯一,房屋状况保持好,看房提前约。','郁花园一里 满五年唯一 中间楼层两居 看房随时','柏林爱乐四期 2室1厅 南 北','满五唯一商品房   四环内  正规三居室','华纺易城 满五年 东区中间位置 观景房 安静 南北通透','二环里 东城区 两居室 采光好 无遮挡 满五年唯一','电信宿舍六层板楼带电梯 前后阳台 无遮挡','大屯里 东西三居 看房随时 诚意出售','阜光里小区  有电梯  满五年  户型方正','正阳小区 2室1厅 东','金隅悦和园 正对小区花园 南向两居室采光充足','八角北里中间层 南北通透 看房随时','满五年唯一,有产权车位单独出售,中间单元,不临街','此房满五年唯一,格局好,明厨明卫,近地铁,近公园','安苑北里精装修两室两厅,视野好,采光好','六合园新华社院 中间楼层 满五年  随时看房','富东嘉园 2室1厅 南 北','北洼西里正规三居业主诚心出售可随时看房','怡海花园@南北通透@双卫,全明格局@配套齐全','海淀区田村路48号院精致全南两居'],'rule_9yc0': ['江南山水 2室1厅 南 北','佳和园南北通透大三居,四个阳台全明格局,满五唯一','满5年眼镜户型,南北双通透,两梯两户,无遮挡','公元九里四居室洋房,次顶层,一天未住。','前半壁街 南北两居室 诚意出售','御景园小区  东北向三居室  房子看房方便  看国贸','石景山五芳园 精装两居室 低楼层','名都园   别墅区带电梯南北三居室   有钥匙看房随时','牡丹园马甸月季园小区优质三居室','清河后屯路32号院南北通透三居室','满五年唯一,房屋状况保持好,看房提前约。','郁花园一里 满五年唯一 中间楼层两居 看房随时','柏林爱乐四期 2室1厅 南 北','满五唯一商品房   四环内  正规三居室','华纺易城 满五年 东区中间位置 观景房 安静 南北通透','二环里 东城区 两居室 采光好 无遮挡 满五年唯一','电信宿舍六层板楼带电梯 前后阳台 无遮挡','大屯里 东西三居 看房随时 诚意出售','阜光里小区  有电梯  满五年  户型方正','正阳小区 2室1厅 东','金隅悦和园 正对小区花园 南向两居室采光充足','八角北里中间层 南北通透 看房随时','满五年唯一,有产权车位单独出售,中间单元,不临街','此房满五年唯一,格局好,明厨明卫,近地铁,近公园','安苑北里精装修两室两厅,视野好,采光好','六合园新华社院 中间楼层 满五年  随时看房','富东嘉园 2室1厅 南 北','北洼西里正规三居业主诚心出售可随时看房','怡海花园@南北通透@双卫,全明格局@配套齐全','海淀区田村路48号院精致全南两居'],'rule_wjo7': ['2室1厅 | 100.8平米 | 南 北 | 精装 | 6层 | 2012年建 | 板楼','3室2厅 | 149.67平米 | 南 北 | 简装 | 中楼层(共6层) | 2001年建 | 板楼','3室1厅 | 151.39平米 | 南 北 | 精装 | 低楼层(共20层) | 2008年建 | 板楼','4室2厅 | 180.57平米 | 南 北 | 精装 | 中楼层(共7层) | 2012年建 | 板楼','2室1厅 | 56.7平米 | 南 北 | 其他 | 顶层(共6层) | 1989年建 | 板楼','3室2厅 | 206.94平米 | 东北 | 精装 | 中楼层(共33层) | 2001年建 | 塔楼','2室1厅 | 64.67平米 | 南 | 精装 | 底层(共6层) | 1994年建 | 板楼','3室2厅 | 145.32平米 | 南 北 | 精装 | 中楼层(共6层) | 2000年建 | 板楼','3室1厅 | 79.7平米 | 东南 西北 | 精装 | 中楼层(共20层) | 1995年建 | 塔楼','3室1厅 | 67.9平米 | 南 北 | 简装 | 底层(共6层) | 1993年建 | 板楼','3室1厅 | 103.8平米 | 南 北 | 简装 | 底层(共6层) | 2004年建 | 板楼','2室2厅 | 83.39平米 | 南 北 | 简装 | 中楼层(共7层) | 1996年建 | 板楼','2室1厅 | 102.03平米 | 南 北 | 精装 | 低楼层(共8层) | 2008年建 | 板楼','3室1厅 | 76.42平米 | 东 西 | 精装 | 高楼层(共6层) | 1992年建 | 板楼','3室2厅 | 128.06平米 | 南 北 | 简装 | 中楼层(共12层) | 2005年建 | 板楼','2室1厅 | 54.72平米 | 西北 | 简装 | 高楼层(共6层) | 1970年建 | 板楼','3室2厅 | 153.6平米 | 南 北 | 精装 | 低楼层(共6层) | 1999年建 | 板楼','3室1厅 | 115.13平米 | 东 西 | 简装 | 低楼层(共24层) | 2003年建 | 塔楼','2室2厅 | 82.33平米 | 南 北 | 简装 | 低楼层(共14层) | 1996年建 | 板楼','2室1厅 | 82.78平米 | 东 | 简装 | 中楼层(共14层) | 2000年建 | 板塔结合','2室2厅 | 78.38平米 | 南 | 精装 | 低楼层(共28层)  | 板塔结合','3室1厅 | 68.43平米 | 南 北 | 简装 | 中楼层(共6层) | 1986年建 | 板楼','3室1厅 | 112.03平米 | 南 北 | 精装 | 低楼层(共27层) | 2014年建 | 板楼','2室1厅 | 69.59平米 | 东北 | 简装 | 底层(共17层) | 1988年建 | 塔楼','2室2厅 | 70.37平米 | 西南 | 精装 | 低楼层(共25层) | 1989年建 | 塔楼','2室1厅 | 64.38平米 | 东 北 | 简装 | 低楼层(共22层) | 1996年建 | 塔楼','2室1厅 | 80.83平米 | 南 北 | 简装 | 中楼层(共10层) | 2007年建 | 板楼','3室1厅 | 81.2平米 | 西南 | 精装 | 中楼层(共18层) | 1990年建 | 塔楼','3室1厅 | 121.16平米 | 南 北 | 精装 | 低楼层(共6层) | 1998年建 | 板楼','2室1厅 | 53.3平米 | 南 | 简装 | 中楼层(共6层) | 1982年建 | 板楼'],'rule_euvr': ['585万','536万','1340万','1170万','779万','928万','289万','690万','838万','530万','479万','380万','650万','369万','1150万','495万','2611万','668万','880万','538万','395万','385万','555万','459万','565万','360万','470万','830万','695万','415万'],'rule_da1p': ['585万','536万','1340万','1170万','779万','928万','289万','690万','838万','530万','479万','380万','650万','369万','1150万','495万','2611万','668万','880万','538万','395万','385万','555万','459万','565万','360万','470万','830万','695万','415万']}

批量抓取

上面只是抓了一个网页,对于需要抓取很多网页,那我们就需要保存上面设计的规则,然后应用在其他网页上。

# 看下结果里面的keys
result.keys()# dict_keys(['rule_nf8n', 'rule_9yc0', 'rule_wjo7', 'rule_euvr', 'rule_da1p'])# 保存其中需要的几个keys(因为上面数据里面有重复,所以我们这里选择需要的几个)
# 这写规则名字可能不太一样,随机的,需要根据你的结果来调整scraper.keep_rules(['rule_nf8n', 'rule_wjo7', 'rule_da1p'])
scraper.save('lianjia-search2')# 加载上面保存的规则lianjia_scraper = None
lianjia_scraper = AutoScraper()
lianjia_scraper.load('lianjia-search2')import pandas as pd
df = pd.DataFrame()# 批量抓取二手房信息for n in range(1, 10):url = f'https://bj.lianjia.com/ershoufang/pg{n}'print(url)result = lianjia_scraper.get_result_similar(url=url, group_by_alias=True)df = pd.concat([df, pd.DataFrame(result)])# print(result)# https://bj.lianjia.com/ershoufang/pg1
# https://bj.lianjia.com/ershoufang/pg2
# https://bj.lianjia.com/ershoufang/pg3
# https://bj.lianjia.com/ershoufang/pg4
# https://bj.lianjia.com/ershoufang/pg5
# https://bj.lianjia.com/ershoufang/pg6
# https://bj.lianjia.com/ershoufang/pg7
# https://bj.lianjia.com/ershoufang/pg8
# https://bj.lianjia.com/ershoufang/pg9

查看结果

df.shape
# (270, 3)df.reset_index(drop=True).head(10)


这样就可以批量抓取网页数据了!

5分钟学会Python爬虫神器autoscraper——自动化爬虫必备相关推荐

  1. 函数式编程语言python-10分钟学会python函数式编程

    原标题:10分钟学会python函数式编程 在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程.你也将了解列表推导和其它形式的推导. 函数范式 在命令式范式中,通过为计算机提供 ...

  2. 五分钟学会Python网络爬虫

    但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的.在学习之前,我们还是要先了解一下相关概念. 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维 ...

  3. python元组添加元素_2分钟学会Python的元组使用

    对于Python 元组,大家了解多少呢?今天我就带大家一起来学习一下Python的元组,让大家快速认识Python的元组,并学会Python的元组在编程中该怎么使用.我们都知道Python的元组与列表 ...

  4. 5分钟学会Python爬取整个网站

    爬取网站的步骤: 设定爬取目标 目标网站:我自己的博客,疯狂的蚂蚁 http://www.crazyant.net 目标数据:所有博客文章的 - 链接.标题.标签 分析目标网站 待爬取页面:http: ...

  5. 快速入门:十分钟学会Python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

  6. python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

  7. 10分钟学会python函数式编程,赶紧收藏!!

    在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程.你也将了解列表推导和其它形式的推导. 函数范式 在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务.在执行这些 ...

  8. 10分钟学会python函数式编程

    在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程.你也将了解列表推导和其它形式的推导. 函数范式 在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务.在执行这些 ...

  9. 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器

    前言 大家周末好,今天给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法.对于获取数据的方法而言,我们会一种就 ...

最新文章

  1. html css发展前景,网页设计的发展趋势
  2. 市场营销学python有用吗_1、熟悉Python编辑、开发和运行环境。
  3. js两个等号和三个等号_js中两个等号(==)和三个等号(===)的区别
  4. 2011 IBM IIS:聚百年智慧精髓 筑最优信息架构
  5. 程序员面试题精选100题(04)-二元树中和为某一值的所有路径[数据结构]
  6. JAVA显式锁,各种锁分类
  7. mysql 使用 utf8mb4 编码
  8. 新巴巴运动网 项目第十一天
  9. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(2)
  10. 51nod 1307 绳子与重物 二分+dfs / 并查集
  11. Qt中线程的简单使用
  12. Linux RAID磁盘阵列
  13. C++调用方式 入栈顺序
  14. Python lstrip() 方法
  15. js uri解码_js对url进行编码和解码(三种方式区别)(转)
  16. java.lang.NoSuchMethodError示例
  17. python执行命令不阻塞_通过python 执行 nohup 不生效的解决
  18. 赤峰市田家炳中学2021高考成绩查询,2021年常州各高中高考成绩排名及放榜最新消息...
  19. HTML+css制作简单游戏界面
  20. 点是否在三角形内——C++实现

热门文章

  1. 我喜欢的LaTex编辑器
  2. 异地购房提取北京公积金说查不到贷款信息是怎么回事
  3. 联想电脑如何改w ndows更新,电脑是否能升级到Windows 8.1 及支持Windows 8.1系统的机型汇总...
  4. 教你轻松理解Go Ticker的用法和实现原理
  5. Android开发一个美食app
  6. 消费者人群画像 python_一步一步教你分析消费者大数据
  7. 哔哩哔哩(B站)品牌投放,优质潜力up主如何找?
  8. 营业额=流量x转化率x客单价x复购率
  9. 医学影像组学人工智能应用培训班
  10. 【小程序页面设计模板】小程序设计模板平台分享