python爬取博客园信息用于归档--excel篇

python爬取博客园信息用于归档--excel篇,第1张

概述之所以要写代码进行爬取,是因为我太懒了,呜呜呜,如果能天天躺着刷手机谁会打代码~~今天上午归档的时候归了半个多小时我就不想归档了,就在图书馆摸鱼,摸着摸着就萌生了写爬虫的想法;下面介绍一下这个爬虫 1.导入库 第一步就是导入所需要的库 equests,xlwt,BeautifulSoup,urll

之所以要写代码进行爬取,是因为我太懒了,呜呜呜,如果能天天躺着刷手机谁会打代码~~

今天上午归档的时候归了半个多小时我就不想归档了,就在图书馆摸鱼,摸着摸着就萌生了写爬虫的想法;

下面介绍一下这个爬虫

 

1.导入库   

第一步就是导入所需要的库 equests, xlwt,BeautifulSoup,urllib.request,这些库包含了爬虫的解析库,还有excel的 *** 作库,可以pip进行安装。

import requests, xlwtfrom bs4 import BeautifulSoupimport urllib.request

2.建立存储容器

url_List1 = []  # 用于存放标题和urlurl_List2 = []  #用于存放日期url_List3 = []  #用于存放详情界面

3.进行列表界面的爬取,列表界面可以爬取题目,链接,日期。这次写爬虫有一个深刻教训,爬取内容尽量在一个div里边进行爬取,起初题目和时间不在一个div里边,导致爬的题目和日期数目对不上位,一个错误卡了我两个小时。

# 获取列表页中的所有博客url,标题,链接,日期;def get_url(HTML):    soup = BeautifulSoup(HTML, 'lxml')  # lxml是解析方式,第三方库    blog_url_List1 = soup.find_all('div', class_='postTitle')    for i in blog_url_List1:        url_List1.append([i.find('a').text, i.find('a')['href']])    #获取列表日期,时间    blog_url_List2 = soup.find_all('div', class_='postDesc')    for i in blog_url_List2:        s = i.text[9:25]        # print(s)        url_List2.append(s)#开始爬取for page in range(0, 1): #定义要爬取的页面数    url = 'http://www.cnblogs.com/linmob/default.HTML?page={}'.format(page)    # print(url)    get_url(get_content(url))

4.详情页进行详细内容的爬取

#详情页中内容进行分步爬取lens = len(url_List1)for j in range(0, lens):    url=url_List1[j][1]    req=urllib.request.Request(url)    resp=urllib.request.urlopen(req)    HTML_page=resp.read().decode('utf-8')    soup=BeautifulSoup(HTML_page,'HTML.parser')#print(soup.prettify())    div=soup.find(ID="cnblogs_post_body")    url_List3.append([div.get_text()])

5.生成表格

newtable = '韩佳作.xls' #生成的excel名称wb = xlwt.Workbook(enCoding='utf-8')  # 打开一个对象ws = wb.add_sheet('blog')  # 添加一个sheetheadData = ['博客标题', '链接','时间','详细内容']# 写标题for colnum in range(0, 4): #定义的四列名称    ws.write(0, colnum, headData[colnum], xlwt.easyxf('Font:bold on'))  # 第0行的第colnum列写入数据headDtata[colnum],就是表头,加粗index = 1#lens = len(url_List1)# 写内容# print(len(url_List1),len(url_List2))print(url_List2)for j in range(0, lens):    ws.write(index, 0, url_List1[j][0])    ws.write(index, 1, url_List1[j][1])    ws.write(index, 2, url_List2[j])    ws.write(index, 3, url_List3[j][0])    index += 1  # 下一行wb.save(newtable)  # 保存

 

完整代码

import requests, xlwtfrom bs4 import BeautifulSoupimport urllib.requesturl_List1 = []  # 用于存放标题和urlurl_List2 = []  #用于存放日期url_List3 = []  #用于存放详情界面# 获取源码def get_content(url):    HTML = requests.get(url).content    return HTML# 获取列表页中的所有博客url,标题,链接,日期;def get_url(HTML):    soup = BeautifulSoup(HTML, 'lxml')  # lxml是解析方式,第三方库    blog_url_List1 = soup.find_all('div', class_='postTitle')    for i in blog_url_List1:        url_List1.append([i.find('a').text, i.find('a')['href']])    #获取列表日期,时间    blog_url_List2 = soup.find_all('div', class_='postDesc')    for i in blog_url_List2:        s = i.text[9:25]        # print(s)        url_List2.append(s)#开始爬取for page in range(0, 1): #定义要爬取的页面数    url = 'http://www.cnblogs.com/linmob/default.HTML?page={}'.format(page)    # print(url)    get_url(get_content(url))#详情页中内容进行分步爬取lens = len(url_List1)for j in range(0, lens):    url=url_List1[j][1]    req=urllib.request.Request(url)    resp=urllib.request.urlopen(req)    HTML_page=resp.read().decode('utf-8')    soup=BeautifulSoup(HTML_page,'HTML.parser')#print(soup.prettify())    div=soup.find(ID="cnblogs_post_body")    url_List3.append([div.get_text()])newtable = '韩佳作.xls' #生成的excel名称wb = xlwt.Workbook(enCoding='utf-8')  # 打开一个对象ws = wb.add_sheet('blog')  # 添加一个sheetheadData = ['博客标题', '链接','时间','详细内容']# 写标题for colnum in range(0, 4): #定义的四列名称    ws.write(0, colnum, headData[colnum], xlwt.easyxf('Font:bold on'))  # 第0行的第colnum列写入数据headDtata[colnum],就是表头,加粗index = 1#lens = len(url_List1)# 写内容# print(len(url_List1),len(url_List2))print(url_List2)for j in range(0, lens):    ws.write(index, 0, url_List1[j][0])    ws.write(index, 1, url_List1[j][1])    ws.write(index, 2, url_List2[j])    ws.write(index, 3, url_List3[j][0])    index += 1  # 下一行wb.save(newtable)  # 保存

懒还是第一生产力啊,同时希望我在接下来的概率论和毛概考试起飞~~~~

总结

以上是内存溢出为你收集整理的python爬取博客园信息用于归档--excel篇全部内容,希望文章能够帮你解决python爬取博客园信息用于归档--excel篇所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1184579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存