python之爬贴吧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
eg:
#要爬取某个贴吧前100页内容
import requests

class TiebaSpider:
def init(self,name,num):
self.num=num #爬取页面数量
self.name=name #爬取贴吧名称
self.url_temp=“https://tieba.baidu.com/f?kw="+self.name+"&ie=utf-8&pn={}” #打开浏览器照着写
self.headers={“Referer”:“https://tieba.baidu.com/f?kw=李毅&ie=utf-8”,
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36”,
“Request URL”: “https: // tbmsg.baidu.com / gmessage / get?mtype = 1 & _ = 1556541342355”,
“Request Method”: “GET”
}

def get_url_list(self):
    return [self.url_temp.format(i*50) for i in range(self.num) ]

def parse_url(self,url):  #获取每一个url的响应并且解析,注意这里解析是utf-8
    print(url) #输出这个url,让我们看一看
    response=requests.get(url,headers=self.headers)
    return response.content.decode()

def save_html(self,html_str,page_num):
    file_path="{}-第{}页.html".format(self.name,page_num)
    with open(file_path,"w",encoding="utf-8") as f:
        f.write(html_str)  #保存html字符串,就是网页内容

def run(self):
    #1.前100页的url列表,因为是同一个贴吧所以其url必有规律,
    # 为了代码复用,因为不同贴吧名称.url不同,所以封装个函数专门处理url
    url_list=self.get_url_list()

    #2.遍历每个url,发送请求,获取对应的响应并保存
    for url in url_list:
        html_str=self.parse_url(url)
        page_num=url_list.index(url)+1  #当前页码数
        self.save_html(html_str,page_num)

if name==“main”:
liyi=TiebaSpider(“Liyi”,100)
liyi.run()

补充:
响应头中set-cookies 的内容是服务器在我们本地加载的cookies
当爬虫被识别出时,服务器可能给你一些无用内容
把请求头中键值对抄到header中,发动请求
在url中参数有一些 %开头,是经过编码后的结果,可以在线查询对应内容
以后用面向对象思维去写,上来class,内置run方法,运行这个类,在这个方法内写入运行该类步骤思想

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值