首页 > 其他 > 详细

贴吧爬取保存到本地

时间:2020-04-20 09:28:39      阅读:66      评论:0      收藏:0      [点我收藏+]

面向过程的代码

import requests

# 步骤
# 确定url地址,生成一个url列表
# 遍历url列表,请求数据
# 把返回的数据保存到本地

# https://tieba.baidu.com/f?kw=武汉&pn=0    50*0
# https://tieba.baidu.com/f?kw=武汉&pn=50   50*1
# https://tieba.baidu.com/f?kw=武汉&pn=100   50*2
# https://tieba.baidu.com/f?kw=武汉&pn=150   50*3
# https://tieba.baidu.com/f?kw=武汉&pn=200   50*4
# 自定义贴吧的名字
name = input(请输入贴吧的名字:)
# url模版
url = https://tieba.baidu.com/f?kw={}&pn={}
# 生成url列表
url_list = [url.format(name, i * 50) for i in range(5)]
print(url_list)
# 定义请求头信息   把浏览器的信息拷贝过来
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}
# 遍历url_list, 得到url
for item in url_list:
    # 请求url , 获取数据
    response = requests.get(item, headers=headers)
    # 文件名字
    file_name = 贴吧_ + name + "第{}页".format(url_list.index(item)+1)+".html"
    # 保存到文件
    with open(file_name, w, encoding=utf-8) as f:
        f.write(response.content.decode())

 

封装面向对象的代码

# 1.确定url 生成url_list
# 2.遍历列表,请求数据
# 3.返回数据,保存到本地
import requests


class Tieba_spider(object):
    def __init__(self, name):
        # 贴吧的名字
        self.name = name
        # 初始化贴吧的url
        self.url = https://tieba.baidu.com/f?kw= + name + &pn={}
        # 定义请求头信息   把浏览器的信息拷贝过来
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"}

    def get_url_list(self):
        """生成url列表"""
        url_list = [self.url.format(i * 50) for i in range(5)]
        return url_list

    def get_data_fromurl(self, url):
        """从服务器获取数据,并且解码返回"""
        # 请求url , 获取数据   这个url 是从url_list遍历得来的
        response = requests.get(url, headers=self.headers)
        return response.content.decode()

    def save_html(self, html_str, num):
        # 文件名字
        file_name = 贴吧_ + self.name + "第{}页".format(num) + ".html"
        # 保存到文件
        with open(file_name, w, encoding=utf-8) as f:
            f.write(html_str)

    def run(self):
        pass
        # 1.确定url 生成url_list
        url_list = self.get_url_list()
        # 2.遍历列表,请求数据
        for item_url in url_list:
            html_str = self.get_data_fromurl(item_url)
            # 3.返回数据,保存到本地
            self.save_html(html_str, url_list.index(item_url) + 1)


if __name__ == __main__:
    # 输入
    name = input(请输入贴吧名字:)
    # 初始化
    spider = Tieba_spider(name)
    # 调用run方法
    spider.run()

 

贴吧爬取保存到本地

原文:https://www.cnblogs.com/wutongluo/p/12735498.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!