java 爬虫 百度贴吧_实现任意百度贴吧的爬虫

目标:爬取任意贴吧下前50页,并保存到本地

观察贴吧网页逻辑类型

ceb049a91a77

LOL吧首页.png

ceb049a91a77

李毅吧首页.png

ceb049a91a77

LOL2.png

ceb049a91a77

LOL3.png

1.前两张图片分别是LOL吧首页,李毅吧的首页,对比发现:

当我们搜索不同的贴吧时,我们看到只有网址kw后边的参数有变化,此处参数表示不同的吧名。

2.后两张图片分别是LOL吧第二页和第三页的信息,对比发现:

代表页码的参数是pn后边的参数,以50的倍数增加。

编辑代码

import requests

class TiebaSpider:

def __init__(self,tieba_name):

self.tieba_name = tieba_name

self.url_temp = "https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"

self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0"}

def get_url_list(self):

url_list = []

for i in range(1000):

url_list.append(self.url_temp.format(i*50))

return url_list

def parse_url(self,url): #发送请求,获取回应

response = requests.get(url,headers=self.headers)

return response.content.decode()

def save_html(self,html_str,page_num): #保存HTML字符串

file_path = "{}-第{}页.html".format(self.tieba_name,page_num)

with open("", "")as f: #"lol-第x页.html"

f.write(html_str)

def run(self): #实现逻辑

#1.构造url列表

url_list = self.get_url_list()

#2.遍历,发送请求,获取响应

for url in url_list:

html_str = self.parse_url(url)

#3.保存

#3.保存

page_num = url_list.index(url)+i #页码数

self.save_html(html_str,page_num)

if__name___ == '__name__':

tieba_spider = TiebaSpider("lol")

tieba_spider.run()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值