1. 程式人生 > 實用技巧 ><爬蟲>常見網址的爬蟲整理

<爬蟲>常見網址的爬蟲整理

借鑑大佬的爬蟲資料,GitHbub連結:https://github.com/Kr1s77/awesome-python-login-model

整理一下,給自己學習爬蟲使用

001.百度貼吧

# 是告訴作業系統執行這個指令碼的時候,呼叫/usr/bin下的python3直譯器;
# !/usr/bin/python3
# -*- coding: utf-8 -*-


"""
請求URL分析	https://tieba.baidu.com/f?kw=魔獸世界&ie=utf-8&pn=50
請求方式分析	GET
請求引數分析	pn每頁50發生變化,其他引數固定不變
請求頭分析	只需要新增User-Agent
"""

# 程式碼實現流程
# 1. 實現面向物件構建爬蟲物件
# 2. 爬蟲流程四步驟
# 2.1 獲取url列表
# 2.2 傳送請求獲取響應
# 2.3 從響應中提取資料
# 2.4 儲存資料

import requests


class TieBa_Spier():

	def __init__(self, max_page, kw):
		# 初始化
		self.max_page = max_page  # 最大頁碼
		self.kw = kw  # 貼吧名稱
		self.base_url = "https://tieba.baidu.com/f?kw={}&ie=utf-8&pn={}"
		self.headers = {
			"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
		}

	def get_url_list(self):
		"""獲取url列表"""
		# 根據pn每50進入下一頁,構建url列表
		return [self.base_url.format(self.kw, pn) for pn in range(0, self.max_page * 50, 50)]

	def get_content(self, url):
		"""傳送請求獲取響應內容"""
		response = requests.get(
			url=url,
			headers=self.headers
		)
		# print(response.text)
		return response.content

	def save_items(self, content, idx):
		"""從響應內容中提取資料"""
		with open('{}.html'.format(idx), 'wb') as f:
			f.write(content)
		return None

	def run(self):
		"""執行程式"""
		# 獲取url_list
		url_list = self.get_url_list()
		for url in url_list:
			# 傳送請求獲取響應
			content = self.get_content(url)

			# 儲存資料,按照url的索引+1命名儲存的檔案
			items = self.save_items(content, url_list.index(url) + 1)

			# 測試
			# print(items)


if __name__ == '__main__':
	# 最大頁碼,貼吧名
	spider = TieBa_Spier(2, "神無月")
	spider.run()