用python中的scripy从交大新闻网主页新闻栏目(http://news.xjtu.edu.cn/zyxw.htm)爬取最新的100 条新闻内容的代码,并保存在news.txt文件中
时间: 2024-02-26 14:53:36 浏览: 240
好的,我可以帮你写一个爬虫程序来实现这个功能。需要用到Scrapy和BeautifulSoup库,如果你还没有安装,可以使用以下命令进行安装:
```
pip install scrapy beautifulsoup4
```
然后在命令行中输入以下命令创建一个新的Scrapy项目:
```
scrapy startproject xjtu_news
```
接着进入项目目录,创建一个新的Spider:
```
cd xjtu_news
scrapy genspider xjtu_news_spider news.xjtu.edu.cn
```
然后在spiders目录下打开xjtu_news_spider.py文件,将以下代码复制进去:
```python
import scrapy
from bs4 import BeautifulSoup
class XjtuNewsSpider(scrapy.Spider):
name = "xjtu_news"
allowed_domains = ["news.xjtu.edu.cn"]
start_urls = ["http://news.xjtu.edu.cn/zyxw.htm"]
def parse(self, response):
soup = BeautifulSoup(response.text, "html.parser")
news_list = soup.find_all("div", class_="text_list")
for news in news_list:
title = news.find("a").get_text().strip()
link = news.find("a")["href"]
yield scrapy.Request(link, callback=self.parse_news, meta={"title": title, "link": link})
def parse_news(self, response):
title = response.meta["title"]
link = response.meta["link"]
soup = BeautifulSoup(response.text, "html.parser")
content = soup.find("div", class_="content").get_text().strip()
yield {
"title": title,
"link": link,
"content": content
}
```
这个Spider会首先访问http://news.xjtu.edu.cn/zyxw.htm这个页面,然后抓取最新的100条新闻的标题和链接,并访问每一条新闻的详情页面,抓取新闻内容。最终结果会以JSON格式保存在文件中。
要运行这个Spider,可以在命令行中输入以下命令:
```
scrapy crawl xjtu_news -o news.json
```
这会将结果保存在news.json文件中。如果你需要保存在news.txt文件中,可以使用以下命令:
```
scrapy crawl xjtu_news -o news.txt -t csv
```
这会将结果保存在news.txt文件中,以CSV格式保存。
阅读全文