
本文将介绍如何使用 Python 的 Scrapy 框架,以更简洁高效的方式从单个 URL 中抓取所有 <a> 标签的 href 属性值,包括嵌套的 <a> 标签。Scrapy 框架内置多线程支持,并提供了强大的链接提取和页面抓取功能,能够显著简化网络爬虫的开发过程。我们将提供一个无需创建完整 Scrapy 项目的示例代码,并介绍如何将其结果保存到 CSV 文件中。
Scrapy 是一个强大的 Python 框架,专门用于网络爬虫。它提供了高效的异步处理、链接提取、数据提取等功能,并支持自定义中间件和管道,可以灵活地处理各种复杂的爬取需求。
通常,使用 Scrapy 需要创建一个包含多个文件和文件夹的项目。但为了快速上手,我们可以将所有代码放在一个文件中,并直接运行。
以下是一个示例代码,用于从 https://www.tradeindia.com/ 抓取所有链接,并将结果保存到 output.csv 文件中:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
allowed_domains = ['www.tradeindia.com']
start_urls = ['https://www.tradeindia.com/']
def parse(self, response):
print('\n>>> url:', response.url, '\n')
links = response.css('a::attr(href)').extract()
# 创建 item,用于保存到 CSV 文件
for url in links:
yield {'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, # 模拟真实用户行为,设置请求之间的延迟,范围从 `0.5*delay` 到 `1.5*delay`
#'LOG_LEVEL': 'INFO', # 减少屏幕上的信息输出
'FEEDS': {'output.csv': {'format': 'csv'}}, # 保存到 CSV, JSON 或 XML 文件
})
c.crawl(MySpider)
c.start()代码解释:
运行代码:
将代码保存为 script.py 文件,然后在命令行中运行:
python script.py
运行完成后,会在当前目录下生成一个 output.csv 文件,其中包含所有提取的链接。
使用 Scrapy 框架可以大大简化网络爬虫的开发过程。通过简单的几行代码,就可以实现多线程的网页链接抓取,并将结果保存到文件中。Scrapy 提供了强大的功能和灵活的扩展性,可以满足各种复杂的爬取需求。
以上就是使用 Scrapy 框架进行多线程网页链接抓取教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号