xpath rastrea currículos gratuitos en materiales para webmasters

Lo que rastreamos hoy es el material gratuito del material para webmasters.
Permítanme hablar primero sobre el proceso. Primero, no hablaré sobre obtener los datos de respuesta. Después de obtener los datos, los analizaré. Una vez completado, el siguiente paso es analizar los datos nuevamente en la dirección de descarga de la página de detalles y luego guardar los datos. Comencemos a programar y practicar.

import requests
import os
import random
from lxml import etree
if __name__=='__main__':
    if not os.path.exists('./jianlisucai'):
        os.mkdir('./jianlisucai')
    headers = {
    
    
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36',
    }
    url = 'http://sc.chinaz.com/jianli/free_%d.html'
    #分页操作
    for pageNum in range(1,5):
        if pageNum == 1:
            new_url = 'http://sc.chinaz.com/jianli/free.html'
        else:
            new_url = format(url%pageNum)
        #获取数据
        response = requests.get(url=new_url,headers=headers)
        response.encoding ='utf-8'
        page_text = response.text
        #实例化对象
        tree=etree.HTML(page_text)
        #定位简历详情页标签//*为全局标签
        div_list = tree.xpath('//div[@id="container"]/div')
        print(div_list)
        for div in div_list:
            #获取详情页的url
            detail_url = div.xpath('./a/@href')[0]
            #print(detail_url)
            #设置简历名字
            page_name = div.xpath('./a/img/@alt')[0]+'.rar'
            #print(page_name)
            #获取详情页数据
            responsee = requests.get(url=detail_url,headers=headers)
            responsee.encoding = 'utf-8'
            detail_data = responsee.text
            #print(detail_data)
            tree2= etree.HTML(detail_data)  #实例化
            #选择下载地址1 即li[1]
            download_list = tree2.xpath('//div[@id="down"]/div[2]/ul/li[1]/a/@href')[0]
            #print(download_list)
            download_data= requests.get(url=download_list,headers=headers)
            download_data.encoding='utf-8'
            download_data=download_data.content
            filepath = 'jianlisucai/'+page_name
            with open(filepath,'wb')  as fp:
                fp.write(download_data)
            print(page_name,'爬取成功!!!')

Puede verificar los resultados usted mismo. Lo siguiente habla principalmente de algunos errores que encontré al hacerlo.

  1. El error del encabezado de la solicitud headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36', }
    debe escribirse como User-Agent, y el error del encabezado de la solicitud aparecerá después de reemplazarlo por un espacio, es decir, Error 400. La solicitud tiene un nombre de encabezado no válido
    2. Operación de
    paginación La operación de paginación debe ser la primera página y la siguiente Se distingue la URL del número de página.
    3. Problema de decodificación
    Dos métodos para resolver
    códigos confusos en chino: -img_name.encode ('iso-8859-1'). Decode ('gbk')
    -response.encoding = 'utf-8' Los
    dos métodos de decodificación se pueden usar indistintamente. Estoy acostumbrado a usar el segundo.

Supongo que te gusta

Origin blog.csdn.net/qwerty1372431588/article/details/106117458
Recomendado
Clasificación