从https://news.sina.com.cn/hotnews/ 使用scrapy爬虫框架爬取新闻标题、媒体、时间
时间: 2024-11-23 16:49:07 浏览: 4
热点新闻,获取各大热门网站热门头条的爬虫程序,使用Python语言编写.zip
使用Scrapy爬虫框架抓取Sina新闻网站的新闻标题、媒体和时间,你可以按照以下步骤操作:
1. **安装必要的库**:首先需要安装Scrapy和相关的中间件(如Requests,BeautifulSoup等)。在命令行中运行:
```
pip install scrapy requests bs4
```
2. **创建一个新的Scrapy项目**:
```
scrapy startproject sina_news_crawler
cd sina_news_crawler
```
3. **定义项目的结构**:
- 创建一个Spider(爬虫)文件,例如`spiders/sinacn_spider.py`,内容如下:
```python
import scrapy
from sina_news_crawler.items import SinanewsItem
class SinaCNSpider(scrapy.Spider):
name = 'sinacn'
allowed_domains = ['news.sina.com.cn']
start_urls = ['https://news.sina.com.cn/hotnews/']
def parse(self, response):
items = []
for article in response.css('div.newslist ul li'):
title = article.css('a.title::text').get()
media = article.css('.source::text').get() or "Sina News"
timestamp = article.css('.time::attr(data-timestamp)').get()
item = SinanewsItem(title=title, media=media, timestamp=timestamp)
items.append(item)
yield item
# 需要设置解析下一页的方式,如果存在分页
next_page = response.css('a.next::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
```
4. **定义Item(数据模型)**:
- 在`items.py`文件中创建一个SinanewsItem类,描述我们要存储的数据:
```python
import scrapy
class SinanewsItem(scrapy.Item):
title = scrapy.Field()
media = scrapy.Field()
timestamp = scrapy.Field()
```
5. **配置settings.py**:
确保允许下载图片和其他资源,并设置延迟避免对服务器压力过大:
```python
DOWNLOAD_DELAY = 0.5
ROBOTSTXT_OBEY = True
```
6. **运行爬虫**:
```
scrapy crawl sinacn
```
7. **处理数据**:
爬虫将返回一个包含新闻列表的JSON文件,你可以选择将其存储到数据库或直接读取分析。
注意:实际操作可能会遇到反爬策略,如验证码、IP限制等。在生产环境中,可能需要使用代理IP池、设置User-Agent、异常处理等功能来提高稳定性。
阅读全文