专栏首页数据云团Python-数据挖掘-贴吧案例-下

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

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

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 地址,表示爬取页码范围的起始页码和终止页码。

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 爬取网页,返回响应内容。

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()

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

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

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

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python-数据挖掘-贴吧案例-上

    https://tieba.baidu.com/f? 是基础部分,问号后面的 “kw=爬虫&ie=utf-8&pn=200”是参数部分。参数部分的“爬虫”是搜索...

    小团子
  • Python-数据解析-lxml库-上

    lxml 使用 Python 语言编写的库,主要用于解析和提取 HTML 或者 XML 格式的数据。

    小团子
  • Django基础篇-模板标签

    例如:一个标签可以输出内容,作为控制结构,“if” 语句或 "for" 循环从数据库中提取内容,甚至可以访问其它的模板标签。

    小团子
  • 用Python把表情包都爬下来,从此不用再担心斗图会输。

    进入斗图啦 1、进入斗图啦网址,点击“最新表情”,再点击第二、第三页,得出规律如下:

    sergiojune
  • Wolfram 美国高中生夏令营

    WolframChina
  • 斗图会输?不存在的

    可以看出,每一页的图片都在 div 标签里面,然后每一个 a 标签包含一个图片,

    Dwyane
  • 再议Linux中一些发行版中默认下载或上传工具curl的使用

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • 定时取指定进程内存脚本

    格式(利用了awk给外部变量赋值,请参考博文http://blog.chinaunix.net/uid-20682147-id-3024853.html):

    一见
  • 云计算与物联网的关系

      物联网与云计算都是基于互联网的,可以说互联网就是它们相互连接的一个纽带。物联网就是互联网通过传感网络向物理世界的延伸,它的最终目标就是对物理世界进行智能化管...

    云计算爱好者
  • Docker容器学习梳理--容器间网络通信设置(Pipework和Open vSwitch)

    自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求。容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容...

    洗尽了浮华

扫码关注云+社区

领取腾讯云代金券