前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-数据挖掘-贴吧案例-下

Python-数据挖掘-贴吧案例-下

作者头像
小团子
发布2019-07-18 15:11:17
2K2
发布2019-07-18 15:11:17
举报
文章被收录于专栏:数据云团

① 提示用户输入要爬取的爬取名,以及要查询的起始页和结束页。然后,使用 urllib.parse.urlencode() 对 url 参数进行转码,组合成一个完整的可访问的 URL。

代码语言:javascript
复制
if __name__ == "__main__":
  kw = input("请输入要爬取的贴吧名:")
  begin_page = int(input("请输入起始页:"))
  end_page = int(input("请输入结束页:"))
  url = "https://tieba.baidu.com/f?"
  key = urllib.parse.urlencode({"kw": kw})
  url = url + key
  tieba_spider(url, begin_page, end_page)

② 用于爬取百度贴吧的函数,该函数需要传递3个参数,分别是 URL 地址,表示爬取页码范围的起始页码和终止页码。

代码语言:javascript
复制
def tieba_spider(url, begin_page, end_page):
  '''
  贴吧爬虫调度器,负责组合处理每个页面的 url
  url:贴吧 url 的前半部分
  begin_page:起始页码
  end_page:结束页
  '''
  for page in range(begin_page, end_page + 1):
    pn = (page - 1) * 50
    file_name = "第" + str(page) + "页.html"
    full_url = url + "&ie=utf-8&pn=" + str(pn)
    html = load_page(full_url, file_name)
    write_page(html, file_name)

③ 实现爬取功能的函数,构造一个 Request 对象,然后使用 urllib.request.urlopen 爬取网页,返回响应内容。

代码语言:javascript
复制
def load_page(url, filename):
  '''
  根据 url 发送请求,获取服务器响应文件
  url:需要爬取的 url 地址
  '''
  headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
  request = urllib.request.Request(url, headers=headers)
  return urllib.request.urlopen(request).read()

④ 存储文件的函数,将爬取到的每页信息存储在本地文件。

代码语言:javascript
复制
def write_page(html, filename):
  '''
  将 html 内容写入本地文件
  html:服务器响应文件内容
  '''
  print("正在保存" + filename)
  with open(filename, 'w', encoding="utf-8") as file:
    file.write(html.decode("utf-8"))

运行程序,按照提示输入贴吧名称以及要爬取的起始页和结束页。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档