今天学习爬虫第二天,我们来试试爬取百度贴吧。

我先说下一下我主要步骤:

  • 1.首先要获取url
  • 2.然后遍历url 获得网页响应
  • 3.把爬取的html以文本的形式保存在本地

大家先看看百度贴吧(lol吧)

在这里插入图片描述
看了一些贴吧后 发现贴吧名字都是 “XXX”+吧 然后看看网址

第一页

在这里插入图片描述

第二页

在这里插入图片描述

第三页

在这里插入图片描述

三页之后 直接找出url的规律,kw=" " 传递xxx吧 ,pn负责翻页,翻一次 ,加50,从0开始。好接下来就可以开始了。

面向对象方法 类 tbspider

在这里插入图片描述

启动程序

在这里插入图片描述

我们看看效果

在这里插入图片描述

文件里面的内容

在这里插入图片描述
成功获取到了html编码 最后附上源码:

import requests
class tbspider:
    def __init__(self, tbname):
        # 将tbname实例化让其在后面的函数save_file中传递self.tbname
        self.tbname = tbname
        # url的规律 kw的参数用tbname传递,而翻页的pn值 用{}代替 以便后续用.format传递
        self.url = "https://tieba.baidu.com/f?kw=" + tbname + "&ie=utf-8&pn={}"

    def get_url(self):  # 1.首先要获取url
        # 定义一个空的列表
        url_list = list()
        # 在列表中加入一组数 每次加50
        for i in range(200):
            url_list.append(self.url.format(i * 50))
        return url_list

    def pass_url(self, url):  # 获得网页响应
        # linux的响应头 网页里直接复制过来
        headers = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
        response = requests.get(url, headers)
        # 返回url的html编码
        return response.content

    def save_file(self, html_str, pag_num):  # 保存文件的函数
        # 在我的/home/python/Desktop/tbspider路径下的文件夹中存储每一页的html编码 并给他们命名 
        # 如果你想保存在其他地方 就写其他地方的地址
        file_name = "/home/python/Desktop/tbspider/{}吧第{}页.html".format(self.tbname, pag_num)
        with open(file_name, "wb", ) as f:
            f.write(html_str)

    def run(self):  # 定义一个主函数主要干的事情 把上面的函数连接起来
        url_list = self.get_url()
        for url in url_list:  # 然后遍历url
            html_str = self.pass_url(url)
            pag_num = url_list.index(url) + 1
            self.save_file(html_str, pag_num)


if __name__ == "__main__":  # 程序入口
    urlname = tbspider("lol")  # 这里的“lol”可以随便更改成你想要的贴吧
    urlname.run()

小伙伴试试吧

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐