好好软件

 找回密码
 注册会员

QQ登录

只需一步,快速开始

查看: 1609|回复: 0

站长整理的百度贴吧Python爬虫程序(在Python3.8版本下调试通过)

[复制链接]
发表于 2022-9-27 22:28:00 | 显示全部楼层 |阅读模式
Python语言是更高级的编程语言,能够用极少的代码量编写出其它语言需要数倍代码才能实现的功能,能够灵活引入包实现专属功能,比如操作Excel(通过xlwings)实现VBA宏功能。站长于2020年做了Python语言入门,2年后的2022年在企业内部组织实施HR人力资源管理系统,利用Python语言编写代码读取Excel导入MySQL来实现HR系统数据初始化,Python编程能力得到较大提升。最近整理修改了一个爬虫程序,可以爬取贴吧帖子标题,分享给大家,抛砖引玉。(附代码文件及输出结果)
  1. # encoding=utf-8
  2. import urllib
  3. import urllib.request

  4. import re


  5. class teiba():
  6.     def spider(self, name, startPage, endPage):
  7.         url = "https://tieba.baidu.com/f?ie=utf-8&"
  8.         url += urllib.parse.urlencode({"kw": name})
  9.         for page in range(startPage, endPage + 1):
  10.             pn = 50 * (page - 1)
  11.             urlFull = url + "&" + urllib.parse.urlencode({"pn": pn})
  12.             print (urlFull)
  13.             html = self.loadPage(urlFull)
  14.             self.dealPage(html, page)

  15.     def loadPage(self, url):
  16.         header = {
  17.             "User-Agent": " Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36"
  18.         }
  19.         request = urllib.request.Request(url, headers=header)
  20.         response = urllib.request.urlopen(request)
  21.         html = response.read()
  22.         print(html)
  23.         return html

  24.     def dealPage(self, html, page):
  25.         partten = re.compile(
  26.             r'<a\s+rel="noopener"\s+href="/p/\d+"\s+title=".*?"\s+target="_blank" class="j_th_tit\s+">(.*?)</a>',
  27.             re.S)
  28.         html = html.decode('utf-8')  # python3
  29.         titleList = partten.findall(html)
  30.         print(titleList)
  31.         rstr = r'<span\s+class="topic-tag"\s+data-name=".*?">#(.*?)#</span>'
  32.         for title in titleList:
  33.             title = re.sub(rstr, "", title)
  34.             #print(title)
  35.             self.writePage(title, page)

  36.     def writePage(self, context, page):
  37.         fileName = "di" + str(page) + "yehtml.txt"
  38.         with open(fileName, "a") as file:
  39.             file.writelines(context + "\n")


  40. if __name__ == '__main__':
  41.     name = input("请输入贴吧名:")
  42.     startPage = input("请输入起始页:")
  43.     endPage = input("请输入终止页:")
  44.     t = teiba()
  45.     t.spider(name, int(startPage), int(endPage))
复制代码

spider.py

1.82 KB, 下载次数: 0

di1yehtml.txt

4.76 KB, 下载次数: 0

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|好好软件 ( 湘ICP备15003160号-1 )

GMT+8, 2024-4-29 10:48 , Processed in 0.171468 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表