批量爬取newsela网站数据的代码
时间: 2023-09-15 15:15:03 浏览: 154
以下是使用Python和BeautifulSoup库批量爬取Newsela网站文章数据的示例代码:
``` python
import requests
from bs4 import BeautifulSoup
import csv
# Newsela文章列表链接
url = 'https://newsela.com/read/#/category/text-set/page/'
# 设定需要爬取的页面数量
page_count = 5
# 存储文章数据的列表
articles = []
# 循环爬取每一页
for page in range(1, page_count+1):
# 构造当前页面的链接
page_url = url + str(page)
# 发送GET请求获取网页内容
response = requests.get(page_url)
# 解析网页内容
soup = BeautifulSoup(response.content, 'html.parser')
# 获取当前页面中每篇文章的链接
links = soup.find_all('a', {'class': 'js-headline-link'})
# 循环爬取每篇文章
for link in links:
# 构造当前文章的链接
article_url = 'https://newsela.com' + link.get('href')
# 发送GET请求获取文章内容
article_response = requests.get(article_url)
# 解析文章内容
article_soup = BeautifulSoup(article_response.content, 'html.parser')
# 获取文章标题
title = article_soup.find('h1', {'class': 'js-headline-text'}).text
# 获取文章作者
author = article_soup.find('a', {'class': 'js-author-link'}).text
# 获取文章正文
paragraphs = article_soup.find_all('p', {'class': 'js-tiptext-text'})
# 将正文段落拼接成完整文章
article = ''
for p in paragraphs:
article += p.text
# 存储文章数据到列表中
articles.append({
'title': title,
'author': author,
'article': article
})
# 将文章数据写入CSV文件
with open('newsela_articles.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'Author', 'Article'])
for article in articles:
writer.writerow([article['title'], article['author'], article['article']])
```
在这个示例代码中,我们使用了循环和分页技术来批量爬取Newsela网站的文章数据。我们还使用了CSV文件格式来存储文章数据。请注意,这个示例代码只是一个基本的爬虫框架,你可能需要根据具体的需求进行修改和优化。此外,请确保遵守道德规范和网站的使用条款,不要滥用爬虫技术。
阅读全文