AutoScraper——爬虫神器

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具体的代码,可以留言告知,作者将会出一期代码解读。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hj_caas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值