python数据爬虫——如何爬取二级页面(三)

爬取二级页面,最重要的是找到二级页面地址,从一级页面中找到以后,使用session.get(url2),可以进入二级页面,按正常的方法便可爬取页面信息:

如果想看不同的方法,请移步:
python数据爬虫——如何爬取二级页面(三)

以下是我用的方法:

from requests_html import HTMLSession
import time
from openpyxl import Workbook

wb=Workbook()
ws=wb.active

ws.append(['职位', '公司名称', '公司详情', '公司地址', '招聘详情'])
session=HTMLSession()


header={
'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
}


for page in range(0,10):
        url='https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,{}.html'.format(page)
        # print(url)
        r=session.get(url)
        for n in range(4,54):
            #获得一级页面地址a对象,列表a
            contents= r.html.find('#resultList > div> p > span > a')#采用selecter 方式,获取href

            # company_contents=r.html.find('div.tCompany_sidebar> dir.tBorderTop_box > div.com_tag>p')
            # content= r.html.xpath(('//*[@id="resultList"]/div[{}]/p/span/a/@href').format(n))[0]
            for content in contents:
                href1=content.attrs['href']#获取一级页面地址a的href属性

                #点击获取的一一极页面地址,,得到二级页面的html
                r2=session.get(href1)

                # 获取公司情况
                company_contents = r2.html.find('div.tCompany_sidebar > div.tBorderTop_box > div.com_tag>p')
                for company_content in company_contents:
                    company_content1=company_content.attrs['title']
                    # print(company_content1)



                work=r2.html.find('div.cn>h1')[0].attrs['title']#获取二级页面职位名称
                company=r2.html.find('div.cn > p.cname > a.catn')[0].attrs['title']#获得二级页面招聘公司名称
                address=r2.html.find('div.cn > p.msg.ltype')[0].attrs['title']#二级页面招聘公司所在地
                work_contents=r2.html.find('div.tCompany_main>div.tBorderTop_box > h2 > span.bname')# 招聘总体信息,列表数据
                for work_content in work_contents:# 读取列表数据,获取元素对象
                    work_content1=work_content.text # 读取列表数据

                    work_content2=r2.html.find('div.tCompany_main > div.tBorderTop_box>div.bmsg.job_msg.inbox >p') # 获取详情页中标题
                    for work_content3 in work_content2:
                        work_content4=work_content3.text # 获得职位详细信息

                        # print(work_content4)

                    time.sleep(1)
                ws.append([work, company, company_content1, address,work_content4])
                wb.save('5python数据爬虫——如何爬取二级页面(三).xlsx')
                print(work, company, company_content1, address,work_content4)
                    # print('*'*20+'\n')
                # company=r.html.find('div.cn>p.cname>a')


            # workname = r.html.xpath(('//*[@id="resultList"]/div[{}]/p/span/a/@title').format(n))[0]  ##职位

你可能感兴趣的:(爬虫)