
本文档旨在指导开发者如何使用 Scrapy 框架高效地从单个 URL 中提取所有链接,包括嵌套链接。通过 Scrapy 提供的强大功能和简洁的 API,我们可以轻松实现多线程爬取,并将提取的链接保存到 CSV 文件中。本文将提供一个可直接运行的 Scrapy 脚本,无需创建完整的 Scrapy 项目,即可快速上手。
网络爬虫经常需要从一个网页中提取所有的链接,并进一步访问这些链接以获取更多信息。对于大型网站,单线程爬取效率低下。Scrapy 是一个强大的 Python 爬虫框架,它内置了多线程支持,可以高效地完成链接提取任务。本教程将展示如何使用 Scrapy 提取指定 URL 及其嵌套 URL 中的所有链接,并将结果保存到 CSV 文件中。
安装 Scrapy:
pip install scrapy
安装 Twisted:
Scrapy 依赖于 Twisted 异步网络框架。某些情况下,直接 pip install scrapy 可能无法正确安装 Twisted。如果遇到问题,可以尝试手动安装 Twisted:
pip install twisted
以下是一个简单的 Scrapy 爬虫脚本,用于提取链接并保存到 CSV 文件。
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
allowed_domains = ['www.tradeindia.com'] # 替换为你的目标域名
start_urls = ['https://www.tradeindia.com/'] # 替换为你的起始 URL
def parse(self, response):
print('\n>>> url:', response.url, '\n')
links = response.css('a::attr(href)').extract()
# 创建 items,用于保存到 CSV 文件
for url in links:
yield {'url': url}
# 创建请求,用于处理下一层 URL
for url in links:
yield response.follow(url)
# --- 无需创建项目即可运行并保存到 `output.csv` ---
from scrapy.crawler import CrawlerProcess
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
'CONCURRENT_REQUESTS': 10, # 默认: 16,调整并发请求数
#'RANDOMIZE_DOWNLOAD_DELAY': True, # 默认: True
'DOWNLOAD_DELAY': 2, # 请求之间的延迟,模拟真实用户行为,避免被封禁
#'LOG_LEVEL': 'INFO', # 减少屏幕输出信息
'FEEDS': {'output.csv': {'format': 'csv'}}, # 保存为 CSV, JSON 或 XML 格式
})
c.crawl(MySpider)
c.start()代码解释:
MySpider 类: 继承自 scrapy.Spider,定义了爬虫的行为。
CrawlerProcess 类: 用于运行爬虫。
将上述代码保存为 spider.py 文件,然后在命令行中运行:
python spider.py
爬虫将开始运行,并将提取到的链接保存到 output.csv 文件中。
本教程介绍了如何使用 Scrapy 框架进行多线程网页链接提取。通过 Scrapy 提供的强大功能和简洁的 API,我们可以高效地完成爬虫任务。 请务必遵守相关法律法规和网站的 robots.txt 协议,合法合规地进行网络爬取。
以上就是使用 Scrapy 进行多线程网页链接提取教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号