让咱们爬取百度贴吧游览信息,看看哪些地方是大家游览关注的热点。

不要问我这个十一去哪儿游览了,我还在家没日没夜的码代码。

这次咱们用 urllib 爬取页面,再用BeautifulSoup提取有用信息,最初用 xlsxwriter 把获取的信息 写入到excel表

一 、用到技术

  • python 根底
  • xlsxwriter 用来写入excel文件的
  • urllib python内置爬虫工具
  • BeautifulSoup解析提取数据

二、 指标页面

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

三、后果

四、装置 必要的库

  • win+R 关上运行
  • 输入cmd 进入控制台
  • 别离装置beautifulsoup4,lxml,xlsxwriter
pip install   lxmlpip install   beautifulsoup4pip 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

2. 页面信息

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

发现所有游览列表都有个独特的class类名j_thread_list

作者与创立工夫
作者的class为frs-author-name,创立工夫的class为is_show_create_time

题目
题目的class为j_th_tit

六、全副代码

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%B8herders={'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  写入excelworkbook    工作簿sheet       表write_row   写入行add         增加close       敞开len         length长度data        数据range       范畴str         (string)字符串append      追加author      作者select      抉择Beautiful   漂亮Soup        糖herders     头信息response    响应read        读decode      编码Request     申请parse       解析quote       援用

在线练习:https://www.520mg.com/it

IT 入门 感激关注