【Python项目实战】爬取微博Top10热搜(保姆级教程)

文章目录

    • 一、前言
    • 二、项目介绍
    • 三、代码编写
      • 1. 调用所需要的库文件
        • (1)所需要的库及其作用
        • (2)代码编写
      • 2. 伪装用户,获取网页响应
        • (1)解读
        • (2)代码编写
      • 3. 制定爬取规则
        • (1)解读
        • (2)代码编写
      • 4. 解析源码,获取所需数据
        • (1)解读
        • (2)代码编写
      • 5. 建立Excel表格
        • (1)解读
        • (2)代码编写
      • 6. 保存数据到Excel表格
        • (1)解读
        • (2)代码编写
      • 7. 创建数据库
        • (1)解读
        • (2)代码编写
      • 8. 保存数据到数据库
        • (1)解读
        • (2)代码编写
      • 9. 主函数
        • (1)解读
        • (2)代码编写
      • 10. if __name__ == "__main__"
    • 三、完整代码
      • 1. 解读
      • 2. 完整代码
    • 四、结果展示
      • 1. 程序运行
      • 2. Excel表
      • 3. 数据库
    • 五、结言


一、前言

回顾2020年,我最大的学习收获莫过于Python。年初时,我还是一个小白,通过观看各大出版社有关于Python的书籍、各类网课以及各大blog网站入门,一路可谓艰辛。如今一眨眼已是年末,在此向大家分享我学习爬虫后的一个小创作、小实战,希望能对各位同样在学习Python语言的朋友们有所帮助。


二、项目介绍

项目步骤
① 实时爬取微博热搜前十标题
② 把爬取到的数据保存在数据库中,同时加上爬取时间(年 - 月- 日 - 时:分)
③ 在本地创建一个Excel表格
④ 把爬取到的数据保存在所创建的Excel表格当中,同时加上爬取时间(年 - 月- 日 - 时:分)

三、代码编写

1. 调用所需要的库文件

(1)所需要的库及其作用
作用
request获取指定网页响应
xlwt写入Excel数据
xlwd读取Excel数据
re正则表达式,用于文字匹配
time获取时间
sqlite3进行一系列的数据库操作
BeautifulSoup网页解析,获取数据
copy复制文件,使得先后不同时间获取到的数据都保存在同一文档
(2)代码编写
import urllib.request
import xlwt, xlrd, re, time, sqlite3
from bs4 import BeautifulSoup
from xlutils.copy import copy

2. 伪装用户,获取网页响应

(1)解读

本步骤是让网页无法发现我们是通过Python去爬取,假装是正常访问

(2)代码编写
# askURL伪装+获取网页响应
def askURL(url):# 伪装header = {"User-Agent": "此处粘贴用户浏览器的User-Agent对应值"}request = urllib.request.Request(url, headers=header)response = urllib.request.urlopen(request)html = response.read().decode("utf-8")return html

3. 制定爬取规则

(1)解读
  • 爬取规则的制定是根据观察网页的源码所得到的

  • 制定爬取规则的用途是告诉程序你要爬取哪一部分的内容,供给 re 模块调用

(2)代码编写
# 爬取内容规则
findTexts1 = re.compile(r'(.*?)', re.S)
findTexts2 = re.compile(r'(.*?)', re.S)

4. 解析源码,获取所需数据

(1)解读

解析源码后,通过制定的爬取规则获取所需数据,保存在一个列表当中

(2)代码编写
def getData(baseurl):# 解析源码html = askURL(baseurl)soup = BeautifulSoup(html, "html.parser")data = []item = soup.find_all('td')   # item = str(item)texts = re.findall(findTexts1, item)texts = str(texts)texts 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部