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)

AutoScraper——爬虫神器_第1张图片

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) #先返回全部的标题信息,再返回价格信息

AutoScraper——爬虫神器_第2张图片
这种方法爬取多标题信息,不容易对齐,因此介绍第二种方法。

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是规则名称,有可能同一种信息使用多种规则返回,选择其一即可。

AutoScraper——爬虫神器_第3张图片
将多种不同的返回结果分开方便利用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——爬虫神器_第4张图片
AutoScraper还有一些其它的细节,比如可以使用get_result_exact进行爬取等,详细信息可参考autoscraper-examples.md。
如果有读者想要详细了解AutoScraper具体的代码,可以留言告知,作者将会出一期代码解读。

你可能感兴趣的:(Python爬虫,爬虫,python,开发语言)