📅  最后修改于: 2023-12-03 14:57:37.147000             🧑  作者: Mango
Scrapy是一个用于爬取数据的Python框架。它提供了一种基于事件驱动的机制来处理网页和解析数据的方法。使用Scrapy可以有效地从大量网站上采集数据,并使用Python进行数据处理、清洗和整理。
可以通过pip安装Scrapy:
pip install scrapy
下面是一个Scrapy爬取百度首页搜索结果的示例代码:
import scrapy
class BaiduSpider(scrapy.Spider):
name = "baidu"
allowed_domains = ["www.baidu.com"]
start_urls = ["https://www.baidu.com/s?wd=scrapy"]
def parse(self, response):
for sel in response.xpath('//div[@id="content_left"]/div[@class="result c-container "]'):
title = sel.xpath('h3/a//text()').extract()
link_url = sel.xpath('h3/a/@href').extract()
desc = sel.xpath('div[@class="c-abstract"]/text()').extract()
item = {
'title': title,
'link_url': link_url,
'desc': desc,
}
yield item
在Scrapy中,中间件是指处理和过滤爬取请求和响应的组件。可以使用中间件实现一些功能,例如自定义User-Agent、设置代理、限制爬取速度等。
下面是一个自定义User-Agent的中间件代码示例:
import random
class RandomUserAgentMiddleware(object):
def __init__(self, agents):
self.agents = agents
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.settings.getlist('USER_AGENTS'))
def process_request(self, request, spider):
request.headers.setdefault('User-Agent', random.choice(self.agents))
最后,Scrapy是一款功能强大的爬虫框架,使用它能够快速、高效地采集数据。但是,采集数据也需要遵守相关的法律规定,同时也需要注意对网站的规则进行尊重。