背景
前天买了个新玩具叫树莓派,研究了不少资料后发现,大家基本上都会使用自带的Python来写一些程序,实现一些好玩的东西。
于是就开始找一些Python的基础资料开始学习,这里推荐廖雪峰的Python教程
突然想起一个编程经验分享里提到,带着目的直接开始写,遇到问题搜索解决,这样学习才是更自然的方法。
为什么选择采集项目?
因为目前做互联网产品,经常需要采集一些数据做分析,学会使用Python做数据采集,应用场景广泛,Python语言据说也很适合这方面的工作。
具体代码(注释说明)
# _*_coding:utf-8_*_
# 引入采集用的http类库,以下库都是python自带
import urllib
import urllib2
# 引入正则表达式库
import re
# 引入csv库
import csv
# 之前没加下面的内容会报错,说什么ACSII码兼容之类的问题
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# 定义一个把采集到的字段写入CSV的方法
def createListCSV(fileName = '', dataList = []):
with open(fileName, 'w') as csvFile:
# 这句很重要,写入BOM头,否则Mac上的Excel打开文件乱码(被坑了半天,这句网上搜到的,管用)
csvFile.write('\xEF\xBB\xBF');
csvWriter = csv.writer(csvFile, delimiter = ',')
# 写个表格的头,方便Excel上的筛选操作
csvWriter.writerow([u"作者", u"内容", u"点赞数", u"评论数"])
for data in dataList:
csvWriter.writerow(data)
csvFile.close
# 采集的第二页做测试
page = 2
# 模拟浏览器Header,不写的话很多网站是禁止采集的
user_agent = 'Mozilla/4.0 (compatible; MSIE 10.0; Windows NT)'
headers = {}
headers['User-Agent'] = user_agent
url = 'http://www.qiushibaike.com/hot/page/' + str(page)
try:
# 创建请求并获取到内容对象
request = urllib2.Request(url, headers = headers)
response = urllib2.urlopen(request)
# 把获取的内容对象转化为utf-8文本
content = response.read().decode('utf-8')
# 写正则匹配需要的字段,先通过sublime的正则验证无误后填进去
pattern = re.compile("
\s*\s*\s*\s*