首先我们需要明确一下,网页爬虫是用来从互联网上抓取数据的一种程序。而CSV是一种常用的数据格式,它是一种简单的、基于文本的表格表示方法,用于表示由逗号分隔的值(即CSV文件)。
那么,如何在Python中编写一个简单的爬虫程序,并将爬取到的数据导出为CSV文件呢?下面我会详细介绍。
一、准备工作
在开始编写爬虫程序之前,我们需要安装一些必要的Python库,包括:
- requests库:用来发送HTTP请求,获取网页的内容。
- Beautifulsoup4库:用来解析HTML和XML文档。
安装命令如下:
pip install requests
pip install beautifulsoup4
二、编写爬虫程序
在安装好必要的库之后,我们就可以开始编写爬虫程序了。这里以爬取豆瓣电影Top250为例。具体步骤如下:
- 导入必要的库:
import csv
import requests
from bs4 import BeautifulSoup
- 设置请求头,用来模拟浏览器发送请求:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
- 发送请求,获取网页内容:
url = "https://movie.douban.com/top250"
response = requests.get(url, headers=headers)
- 解析HTML文档,获取需要的数据:
soup = BeautifulSoup(response.text, "html.parser")
movie_list = soup.find_all("div", class_="hd")
这里使用了Beautifulsoup4库来解析HTML文档,其中soup.find_all()
方法用来查找符合条件的所有标签,这里查找的是<div class="hd">
标签,它包含电影的名称和链接。
- 将数据导出为CSV文件:
with open("movies.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerow(["电影名称", "电影链接"])
for movie in movie_list:
name = movie.a.span.text.strip()
url = movie.a["href"]
writer.writerow([name, url])
这里使用了Python内置的csv库,csv.writer()
方法用来写入CSV文件,其中writer.writerow()
方法用来写入每一行数据。
在上面的例子中,我们将电影的名称和链接写入CSV文件中。
三、示例说明
这里再举两个示例,来说明如何爬取不同网站的数据,并将数据导出为CSV文件。
1.爬取新浪新闻的热点新闻
import csv
import requests
from bs4 import BeautifulSoup
url = "https://news.sina.com.cn/hotnews/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
news_list = soup.find_all("a", target="_blank", href=True)
with open("news.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerow(["新闻标题", "新闻链接"])
for news in news_list:
title = news.text.strip()
url = news["href"]
writer.writerow([title, url])
在这个示例中,我们爬取了新浪新闻的热点新闻,并将新闻的标题和链接导出为CSV文件。
2.爬取知乎上关于Python的所有问题
import csv
import requests
from bs4 import BeautifulSoup
url = "https://www.zhihu.com/search?type=content&q=python"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
question_list = soup.find_all("h2")
with open("questions.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.writer(f)
writer.writerow(["问题", "问题链接"])
for question in question_list:
title = question.a.text.strip()
url = "https://www.zhihu.com" + question.a["href"]
writer.writerow([title, url])
在这个示例中,我们爬取了知乎上关于Python的所有问题,并将问题的标题和链接导出为CSV文件。
以上是关于Python简单爬虫导出CSV文件的实例讲解的完整攻略,希望可以帮助到大家。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python简单爬虫导出CSV文件的实例讲解 - Python技术站