# 爬取全班博客信息绘制成博客

爬取全班博客信息绘制成博客

原理

先读取一个存放同学学号、姓名、博客网址的表格,转化成一个二层列表,每一行是一个列表。

模拟浏览器去一个一个的打开网址,获取html’,用beautifulsoup找到要的信息写入一个新的表格

这就是存放学号、姓名、博客网址的表格a.csv
在这里插入图片描述

还有这里一定要按规范写,表格第七列,第八列不要为空

from selenium import webdriver
from bs4 import BeautifulSoup
import datetime
import time

import csv
result = []
result1 = []

#读取表格,这个表格放在自己平时保存python文件的默认文件夹下,如果不知道默认文件夹,就新建一个文件点保存就会出现
with open('a.csv', 'r', encoding='UTF-8') as f:
    reader = csv.reader(f)
    result = list(reader)
    text_new = f.read()  

    # print(result)
# print(result.index(0))
for i in range(2,len(result)):
	if result[i][6] == '':
		break
	result1.insert(i-1,result[i])
# print(result1)




list1 = ["学号","姓名","blog文章标题","发表时间","浏览量","评论数",'点赞',"blog文章链接","爬取时间"]

#为了存储博客网址
linshi = ''

for i in result1:
	browser = webdriver.Chrome()	
    //读取每一篇博客的网址
	browser.get(i[6])
	linshi = i[6]
	# f = open("dongtai.txt", 'w', encoding = 'utf-8')
# html= (browser.page_source).encode('GBK', 'ignore')
# with open (browser.page_source) as f: 
# 	f.write()
# id="spanCount" class="count
	soup = BeautifulSoup(browser.page_source, 'lxml')
# print('文章标题',soup.title.string)
# print('发表时间',soup.find_all(attrs={'class','time'})[0].string)
# print('浏览量',soup.find_all(attrs={'class': 'read-count'})[0].string)
# print('评论数',soup.find_all(attrs={'class','count'})[2].string[21])
# print('赞',soup.find_all(attrs={'class','count'})[0].string[25])
	i[2] = soup.title.string
	i[3] = soup.find_all(attrs={'class','time'})[0].string
	i[4] = soup.find_all(attrs={'class': 'read-count'})[0].string
	i[5] = soup.find_all(attrs={'class','count'})[2].string[21]
	i[6] = soup.find_all(attrs={'class','count'})[0].string[25]#这些想要哪些具体的信息自己先把列表整个输出,看自己要的式第几个,遇到有换行的也可以这样把字符串的每一位输出,找到想要的内容
	i[7] = linshi
	i[8] = datetime.datetime.now()

    #test97必须是不存在的文件
with open('test97.csv', 'w') as f:
    for j in list1:
        f.write("%s," % (j))
    f.write("\n")
    for j in result1:
    	for h in j:
            #写入\t是为了以字符型式写入表格,防止excel自作多情把学号变成科学计数法
    		f.write("%s\t," % (h))
    	f.write("\n")
print('finish!')


最后就完成了

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值