Scrapy爬虫在新闻数据提取中的应用
import scrapy
class NewsSpider(scrapy.Spider):
name = 'news_spider'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com/news']
def parse(self, response):
# 提取新闻标题和链接
for href in response.css('div.news-list a::attr(href)').getall():
url = response.urljoin(href)
yield scrapy.Request(url, callback=self.parse_news)
# 提取下一页链接并进行爬取
next_page_url = response.css('div.pagination a::attr(href)').re(r'page=(\d+)')[1]
if next_page_url:
next_page_url = response.urljoin('page=' + next_page_url)
yield scrapy.Request(next_page_url, callback=self.parse)
def parse_news(self, response):
# 提取新闻详细内容
title = response.css('div.news-title::text').get()
content = response.css('div.news-content::text').getall()
yield {
'title': title,
'content': content,
'url': response.url,
}
这个代码实例展示了如何使用Scrapy框架来创建一个简单的新闻爬虫。它定义了一个名为NewsSpider
的爬虫,该爬虫会从example.com
域名的新闻页面开始爬取,提取新闻标题和链接,然后逐个访问新闻详情页面,提取新闻详情内容。最后,它以一个包含新闻标题、内容和URL的字典的形式输出。这个例子教会了如何使用Scrapy的Request
和Item
来构建一个更为实际和复杂的爬虫。
评论已关闭