在这里我们写一个简单的小爬虫程序,爬取百度贴吧前几页的数据。
import requests
import sys
class Tieba(object):
def __init__(self, name, pn):
self.name = name
self.headers = { #requests请求的时候一定要带上headers 请求头
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
}
#kw{ }=.format(parems) 是一种拼接数据的方式 会把format里面的参数传递给 kw{}里面
self.base_url = "http://tieba.baidu.com/f?kw={}&pn=".format(self.name)
self.url_list = [self.base_url + str(i*50)for i in range(pn)] #使用列表生成式,构建 url列表
def get_data(self, url):
response = requests.get(url, headers=self.headers)
return response.content
def save_data(self, data, index):
# 组装文件名 再次用到 format格式
filename = self.name + "_{}.html".format(index)
with open(filename, 'wb')as f:
f.write(data)
def run(self):
# run中写爬取思路
# 构建请求头
# 构建url列表
# 遍历url列表,对每一个url发起请求获取响应
for url in self.url_list:
data = self.get_data(url)
# 将响应保存
index = self.url_list.index(url)
self.save_data(data, index)
接线来,开始main主函数启动,调用其他函数
if name == 'main':
#input是一种方法
word = sys.argv[1] #sys接收参数 就是从控制台 console获取数据
pn = sys.argv[2]
tieba = Tieba(word, int(pn))
tieba.run()