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

  • Post author:
  • Post category:python





一、前言

回顾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'<td class="td-02">(.*?)</td>', re.S)
findTexts2 = re.compile(r'<a href="(.*?)" target="_blank">(.*?)</a>', re.S)



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



(1)解读

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



(2)代码编写

def getData(baseurl):
    # 解析源码
    html = askURL(baseurl)
    soup = BeautifulSoup(html, "html.parser")

    data = []

    item = soup.find_all('td')   # <td class="td-02">
    item = str(item)
    texts = re.findall(findTexts1, item)
    texts = str(texts)
    texts 



版权声明:本文为wzh365979633原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。