scrapy 简单案例
时间: 2023-09-12 17:11:55 浏览: 35
以下是一个简单的 scrapy 爬虫案例,用于爬取网站上的新闻标题和链接:
```python
import scrapy
class NewsSpider(scrapy.Spider):
name = "news"
start_urls = ["https://www.example.com/news"]
def parse(self, response):
for news in response.css("div.news-item"):
yield {
"title": news.css("a.news-title::text").get(),
"link": news.css("a.news-title::attr(href)").get(),
}
next_page = response.css("a.next-page::attr(href)").get()
if next_page:
yield response.follow(next_page, self.parse)
```
这个爬虫会首先访问 `https://www.example.com/news`,然后从每个新闻项目中提取标题和链接。接着,它会查找下一页的链接并跟随链接执行相同的操作,直到没有下一页为止。
相关问题
scrapy爬虫案例python
Scrapy是一个强大的Python爬虫框架,用于快速、高效地从网页中提取数据。下面是一个使用Scrapy的爬虫案例。
假设目标是从一个电子商务网站上获取商品的名称、价格和评论。首先,需要创建一个Scrapy项目。在命令行中输入以下命令:
```
scrapy startproject ecommerce
```
会生成一个名为ecommerce的文件夹,其中包含Scrapy项目的基本结构。接下来,进入项目文件夹并创建一个爬虫:
```
cd ecommerce
scrapy genspider products example.com
```
这里创建了一个名为products的爬虫,爬取的网站是example.com。进入爬虫文件`products.py`,可以看到Scrapy自动生成的代码。在`parse`方法中,可以编写代码来提取需要的数据。
首先,需要确定要提取数据的网页结构。使用Chrome浏览器的开发者工具,可以查看网页的HTML结构。根据需要提取的数据,可以使用XPath或CSS选择器来定位元素。比如,要提取商品的名称和价格,可以使用以下代码:
```
def parse(self, response):
products = response.xpath('//div[@class="product"]')
for product in products:
name = product.xpath('.//h2/text()').get()
price = product.xpath('.//span[@class="price"]/text()').get()
yield {
'name': name,
'price': price
}
```
这个代码会在网页中查找所有`class`属性为`product`的`div`元素,并提取每个商品的名称和价格。
接下来,需要配置爬虫的URL和启动设置。在项目文件夹中的`settings.py`文件中,可以设置爬虫的起始URL和其他的配置参数。
最后,运行爬虫并保存数据。在命令行中输入以下命令:
```
scrapy crawl products -o data.json
```
这个命令会运行名为products的爬虫,并将提取的数据保存在data.json文件中。
以上就是一个使用Scrapy爬虫框架的简单案例。通过编写适当的代码,可以根据需要从网页中提取所需的数据。Scrapy提供了丰富的功能和灵活的配置选项,使得爬虫开发变得更加容易和高效。
python爬虫scrapy使用案例
好的,关于Python爬虫框架Scrapy的使用案例,下面是一个简单的示例:
首先,我们需要先安装Scrapy框架,可以使用以下命令进行安装:
```
pip install scrapy
```
接着,我们可以创建一个Scrapy项目,使用以下命令:
```
scrapy startproject tutorial
```
这将会创建一个名为“tutorial”的Scrapy项目,其中包括项目的结构和一些基本文件。
接下来,我们可以进入该项目目录,并在该目录下创建一个Spider,用于爬取特定网站的数据。以下是一个名为“quotes_spider.py”的Spider示例代码:
```
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'http://quotes.toscrape.com/page/1/',
'http://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
```
在该示例代码中,我们定义了一个名为“QuotesSpider”的Spider,它会在启动时请求两个网址,并在获得响应后将响应内容保存为HTML文件。
最后,我们可以使用以下命令在命令行中运行该Spider:
```
scrapy crawl quotes
```
这将会运行名为“quotes”的Spider,然后开始爬取数据。
以上就是一个简单的Scrapy使用案例,希望对您有帮助!