Código orientado a procesos
importar solicitudes # Paso # Determinar la dirección de url, generar una lista de url # Recorrer la lista de url, solicitar datos # Guardar los datos devueltos en el local # https://tieba.baidu.com/f?kw=Wuhan&pn=0 50 * 0 # https://tieba.baidu.com/f?kw=Wuhan&pn=50 50 * 1 # https://tieba.baidu.com/f?kw=Wuhan&pn=100 50 * 2 # https: // tieba .baidu.com / f? kw = Wuhan, el PN = 150 50 * y 3 # https://tieba.baidu.com/f?kw= Wuhan, el PN = 200 50 * 4 y # personalizada nombre de la barra mensaje Name = la entrada ( ' por favor pegarlo introduzca el nombre: ' ) # url plantilla url = ' https://tieba.baidu.com/f?kw= PN = {} {} y ' # generada lista de URL = Url_list [url.format (nombre, 50 * I) para que en el rango (5. )] Imprimir (url_list) # definen la información de la cabecera copia navegador solicitud a través de cabeceras = { " el Agente User-- " : " Mozilla / 5.0 (Macintosh; Intel Mac OS X-las 10_13_6) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 80.0.3987.163 Safari / 537.36 " } # iterate url_list, get url de artículo en url_list: # solicitud de URL, para obtener datos de respuesta = requests.get (artículo, encabezados = cabeceras) # nombre del archivo nombre_archivo = ' lo publicó _' + nombre + " 第 {} 页" .format (url_list.index (item) +1) + " .html " # 保存 到 文件 con abierto (nombre_archivo, ' w ' , codificación = ' utf-8 ' ) como f : f.write (response.content.decode ())
Encapsular código orientado a objetos
# 1. Determine la url para generar url_list # 2. Recorre la lista, solicite datos # 3. Devuelva los datos y guárdelos en la clase de solicitudes de importación local Tieba_spider (objeto): def __init__ (self, name): # 贴 吧 的 名字 self.name = name # inicialización pegarlo URL self.url = ' https://tieba.baidu.com/f?kw= ' + nombre + ' y PN = {} ' # definen la información de la cabecera copia navegador solicitud a través de self.headers = { " Usuario-Agente " : " Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit / 537.36 (KHTML, como Gecko) Chrome / 80.0.3987.163 Safari / 537.36 " } def get_url_list (self): " "" Generar lista de url "" " url_list = [self .url.format (50 * I) para que en el rango (5. )] volver url_list DEF get_data_fromurl (Ser, url): "" " Obtener datos desde el servidor, y devuelve el decodificado " "" # solicitud de URL, es la obtención de datos que url Response = request.get (url, headers = self.headers) devuelve response.content del recorrido url_list .decode () defsave_html (Ser, html_str, NUM): # Nombre del archivo nombre_archivo = ' barra posterior _ ' + el self.name + " en la p {} " .formato (NUM) + " .html " # guarda en un archivo con Open (nombre_archivo, ' W ' , encoding = ' utf-8 ' ) como f: f.write (html_str) def run (self): pass # 1. Determine la URL para generar url_list url_list = self.get_url_list () # 2. Atraviese la lista, solicite datos para item_url enUrl_list: html_str = self.get_data_fromurl (item_url) # 3. datos de retorno, guardados localmente self.save_html (html_str, url_list.index (item_url) + 1. ) SI el __name__ == ' __main__ ' : # entrada de nombre = input ( ' por favor introduzca el nombre que se le atribuye: ' ) # initialize araña = Tieba_spider (nombre) # llamar al método run spider.run ()