AutoScraper: 智能、自动、快速的Python网页抓取工具

Ray

AutoScraper简介

AutoScraper是一个智能、自动、快速且轻量级的Python网页抓取库。它的设计目标是让网页数据提取变得简单易用,即使对于没有编程经验的用户也能快速上手。与传统的网页爬虫不同,AutoScraper采用了机器学习的方法,通过用户提供的少量样本数据就能自动学习抓取规则,然后应用这些规则从相似的网页中提取更多数据。

这个项目的核心理念是让网页抓取变得自动化。用户只需提供一个URL和一些想要从该页面抓取的样本数据,AutoScraper就能学习抓取规则并返回相似的元素。这些数据可以是文本、URL或页面上任何HTML标签的值。一旦学习完成,用户就可以使用这个训练好的对象从新的URL中获取类似的内容或完全相同的元素。

AutoScraper Logo

AutoScraper的主要特点

  1. 智能学习: 通过少量样本数据自动学习抓取规则,无需手动编写复杂的选择器。

  2. 易用性: 简单的API设计,几行代码即可完成网页数据提取。

  3. 灵活性: 可以提取文本、URL或任何HTML标签的值。

  4. 自动化: 学习完成后可以自动从相似页面提取数据。

  5. 轻量级: 依赖少,安装简单,运行快速。

  6. 可扩展: 支持自定义请求参数,如代理、自定义头等。

  7. 模型保存: 可以保存训练好的模型以便后续使用。

安装方法

AutoScraper兼容Python 3,安装非常简单。您可以选择以下任一方式进行安装:

  1. 使用pip从PyPI安装最新版本:
pip install autoscraper
  1. 从GitHub仓库安装最新开发版本:
pip install git+https://github.com/alirezamika/autoscraper.git
  1. 从源代码安装:
python setup.py install

基本使用教程

让我们通过一个简单的例子来了解AutoScraper的基本用法。假设我们想要从Stack Overflow的一个问题页面中提取所有相关的问题标题。

from autoscraper import AutoScraper

url = 'https://stackoverflow.com/questions/2081586/web-scraping-with-python'

# 我们可以添加一个或多个候选项
# 您也可以在这里放入URL来检索URL
wanted_list = ["What are metaclasses in Python?"]

scraper = AutoScraper()
result = scraper.build(url, wanted_list)
print(result)

运行这段代码后,AutoScraper会学习如何提取类似的问题标题,并返回一个包含页面上所有相关问题标题的列表:

[
    'How do I merge two dictionaries in a single expression in Python (taking union of dictionaries)?', 
    'How to call an external command?', 
    'What are metaclasses in Python?', 
    'Does Python have a ternary conditional operator?', 
    'How do you remove duplicates from a list whilst preserving order?', 
    'Convert bytes to a string', 
    'How to get line count of a large file cheaply in Python?', 
    "Does Python have a string 'contains' substring method?", 
    'Why is "1000000000000000 in range(1000000000000001)" so fast in Python 3?'
]

现在,您可以使用这个scraper对象来获取任何Stack Overflow页面的相关主题:

scraper.get_result_similar('https://stackoverflow.com/questions/606191/convert-bytes-to-a-string')

高级用法

精确结果提取

有时您可能需要提取特定的数据,而不是相似的内容。例如,让我们从雅虎财经网站抓取实时股票价格:

from autoscraper import AutoScraper

url = 'https://finance.yahoo.com/quote/AAPL/'

wanted_list = ["124.81"]

scraper = AutoScraper()

# 我们也可以通过html参数传递HTML内容,而不是URL (html=html_content)
result = scraper.build(url, wanted_list)
print(result)

注意,由于页面内容会动态变化,您可能需要更新wanted_list中的价格。

您还可以传递任何自定义的requests模块参数。例如,如果您想使用代理或自定义头:

proxies = {
    "http": 'http://127.0.0.1:8001',
    "https": 'https://127.0.0.1:8001',
}

result = scraper.build(url, wanted_list, request_args=dict(proxies=proxies))

现在我们可以获取任何股票代码的价格:

scraper.get_result_exact('https://finance.yahoo.com/quote/MSFT/')

多元素提取

如果您想获取更多信息,只需将它们添加到wanted_list中即可。使用get_result_exact方法将按照wanted_list中的确切顺序检索数据。

例如,假设我们想从GitHub仓库页面抓取"关于"文本、星标数和问题链接:

from autoscraper import AutoScraper

url = 'https://github.com/alirezamika/autoscraper'

wanted_list = ['A Smart, Automatic, Fast and Lightweight Web Scraper for Python', '2.5k', 'https://github.com/alirezamika/autoscraper/issues']

scraper = AutoScraper()
scraper.build(url, wanted_list)

保存和加载模型

训练好的模型可以保存下来供以后使用。保存模型:

# 给它一个文件路径
scraper.save('github-scraper')

加载模型:

scraper.load('github-scraper')

避免被封禁

在使用AutoScraper进行大规模数据抓取时,需要注意避免被目标网站封禁。以下是一些建议:

  1. 使用代理: AutoScraper支持代理实现。您可以使用免费代理或付费代理服务。

  2. 控制请求频率: 在抓取多个页面时,添加适当的延迟。

  3. 模拟真实用户行为: 随机化请求间隔,添加适当的User-Agent。

  4. 遵守robots.txt: 尊重网站的爬虫规则。

  5. 使用高级反爬虫绕过技术: 对于复杂的反爬虫机制,考虑使用专业的Web抓取API服务。

结语

AutoScraper为网页数据提取提供了一种简单而强大的解决方案。它的智能学习能力和易用性使得即使是编程新手也能快速上手进行网页抓取。然而,在使用过程中,请务必遵守网站的使用条款和法律法规,合理使用这一工具。

随着网页技术的不断发展,AutoScraper也在持续更新和改进。建议用户关注项目的GitHub页面以获取最新的功能和改进。同时,如果在使用过程中遇到任何问题,也可以在GitHub上提出issue寻求帮助。

总之,AutoScraper为数据分析师、研究人员和开发者提供了一个强大的工具,帮助他们更轻松地获取和利用网络上的公开数据。希望这篇文章能够帮助您更好地理解和使用AutoScraper,开启您的网页数据提取之旅。

Happy Coding! ♥️

avatar
0
0
0
最新项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号