技术文章 > Python技术 > Python爬虫 > 正文

新人必看!手把手教你使用python爬取百度贴吧

coldplay.xixi

5ed7322261374488.jpg

大多数人做数据的第一个任务,就是做网页爬取。那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的数据来源。在几次尝试之后,网页爬取对我来说就几乎是种本能行为了。如今,它更成为了我几乎每天都要用到的少数几个技术之一。十一国庆长假刚刚过去,哪些地方是大家旅游关注的热点?让我们爬取一下百度贴吧旅游信息,了解大家旅游关注的热点信息。

  • 写在最前面:        

我们用 urllib 爬取页面,再用BeautifulSoup提取有用信息,最后用 xlsxwriter 把获取的信息 写入到excel表。

一、技术列表

  1. python 基础        

  2. xlsxwriter 用来写入excel文件的        

  3. urllib——python内置爬虫工具        

  4. BeautifulSoup解析提取数据        

二、找到目标页面

https://tieba.baidu.com/f?kw=%E6%97%85%E6%B8%B8&ie=utf-8&pn=0

QQ截图20201011153502.png

三、输出结果

QQ截图20201011153716.png

四、安装必要的库

  1. win+R 打开运行        

  2. 输出cmd 进入控制台        

  3. 分别安装beautifulsoup4,lxml,xlsxwriter        

pip install   lxml
pip install   beautifulsoup4
pip install   xlsxwriter

五、分析页面

1. 页面规律

我们单击分页按钮,拿到页面最后一个参数的规律

  • 第二页:https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 50        

  • 第三页:https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 100        

  • 第四页:https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 150        

QQ截图20201011172512.pngQQ截图20201011172551.png

2. 页面信息

旅游信息列表打开网页https://tieba.baidu.com/f?kw=旅游&ie=utf-8&pn= 50按键盘F12键或者 鼠标右键"检查元素"(我用的谷歌chrome浏览器)

发现所有旅游列表都有个共同的class类名j_thread_list

QQ截图20201011172629.png

作者与创建时间

作者的classfrs-author-name

创建时间的classis_show_create_time

QQ截图20201011172640.png

标题

标题的classj_th_tit

QQ截图20201011172654.png

六、全部代码

import xlsxwriter
# 用来写入excel文件的
import urllib.parse
# URL编码格式转换的
import urllib.request
# 发起http请求的
from bs4 import BeautifulSoup
# css方法解析提取信息

url='https://tieba.baidu.com/f?kw='+urllib.parse.quote('旅游')+'&ie=utf-8&pn='
# 百度贴吧旅游信息
# parse.quote("旅游") # 结果为%E6%97%85%E6%B8%B8

herders={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36', 'Referer':'https://tieba.baidu.com/','Connection':'keep-alive'}
# 请求头信息

data = []
# 所有爬虫的数据都存放到 这个data列表里面

"""
getList 获取分页中的列表信息
url   分页地址
"""
def getList(url):

    req = urllib.request.Request(url,headers=herders)
    # 设置请求头
    response=urllib.request.urlopen(req)
    # 发起请求得到 响应结果response

    htmlText = response.read().decode("utf-8").replace("<!--","").replace("-->","")
    # htmlText = 响应结果read读取.decode 转换为utf文本.replace 替换掉html中的注释
    # 我们需要的结果在注释中,所以要先替换掉注释标签 <!-- -->

    html = BeautifulSoup(htmlText,"lxml")
    # 创建beautifulSoup对象

    thread_list=html.select(".j_thread_list")
    # 获取到所有的旅游类别


    # 遍历旅游列表
    for thread in thread_list:
        title = thread.select(".j_th_tit")[0].get_text()
        author = thread.select(".frs-author-name")[0].get_text()
        time= thread.select(".is_show_create_time")[0].get_text()
        # 提取标题,作者,事件
        print(title) # 打印标签
        data.append([title,author,time])
        # 追加到总数据中

"""
获取到所有的分页地址,最大5页
url 页面地址
p=5 最多5页
"""
def getPage(url,p=5):
    for i in range(5):
        link = url+str(i*50)
        # 再一次拼接 第1页0  第2页50 第3页100 第4页150
        getList(link)
        # 执行获取页面函数getList

"""
写入excel文件
data 被写入的数据
"""
def writeExecl(data):
    lens = len(data)
    # 获取页面的长度
    workbook = xlsxwriter.Workbook('travel.xlsx')
    # 创建一个excel文件
    sheet = workbook.add_worksheet()
    # 添加一张工作表
    sheet.write_row("A1",["标题","作者","时间"])
    # 写入一行标题
    for i in range(2, lens + 2):
        sheet.write_row("A"+str(i),data[i - 2])
    # 遍历data 写入行数据到excel
    workbook.close()
    # 关闭excel文件
    print("xlsx格式表格写入数据成功!")

"""
定义主函数
"""
def main():
    getPage(url,5) #获取分页
    writeExecl(data) #写入数据到excel

# 如果到模块的名字是__main__ 执行main主函数
if __name__ == '__main__':
    main()

七、单词表

main        主要的
def         (define) 定义
getPage     获取页面
writeExcel  写入excel
workbook    工作簿
sheet       表
write_row   写入行
add         添加
close       关闭
len         length长度
data        数据
range       范围
str         (string)字符串
append      追加
author      作者
select      选择
Beautiful   美丽
Soup        糖
herders     头信息
response    响应
read        读
decode      编码
Request     请求
parse       解析
quote       引用
免费视频教程
本文原创发布python学习网,转载请注明出处,感谢您的尊重!
相关文章
 通过一个简单的爬虫来研究Python爬虫
 什么是Scrapy框架
 看kindle网站电子书用Python爬取下载
 Python爬虫一天抓取百万张网页的小技巧
 使用Python爬虫代理增加网站流量
相关视频章节
 网络爬虫
 云端部署Web应用程序视频
 Web应用框架Flask和文件模板
 Web应用程序开发概述
 继承和多态
作者信息

coldplay.xixi

认证0级讲师

最近文章
mysql中如何写判断语句1256
mysql怎么声明游标570
mysql怎么做全文检索1316
推荐视频
视频教程分类