用代理爬取Bosszhipin

from bs4 import BeautifulSoup
import requests
import ip_proxy
from urllib import parse

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


def get_boss_info(my_ip,detailed_url):
    #url = 'https://www.zhipin.com/job_detail/7e883f0c3a336cb51n142968FFM~.html?ka=search_list_1'

    proxy = {
        'http': 'http://' + my_ip.ip_proxy_str,
        'https': 'http://' + my_ip.ip_proxy_str
    }
    response = requests.get(detailed_url, headers=headers, proxies = proxy, timeout=5)

    soup = BeautifulSoup(response.text, 'lxml')
    title = soup.find('h1').text
    #div_ele = soup.find('div', class_="name")
    #print(div_ele)
    salary = soup.find('span', class_="badge").text.replace('\n', '').strip()
    print(title)
    print(salary)
    gezhong_info = soup.select('div.info-primary > p')[0].text.replace('\n', '').strip()
    print(gezhong_info)
    gangwei_info = soup.select('div.text')[0].text
    print(gangwei_info)


# 获取详情页的url
def get_detail_url(my_ip, url):
    proxy = {
        'http': 'http://' + my_ip.ip_proxy_str,
        'https': 'http://' + my_ip.ip_proxy_str
    }
    response = requests.get(url, headers = headers, proxies=proxy, timeout=5)

    soup = BeautifulSoup(response.text, 'lxml')
    a_ele_list = soup.select('div.job-list > ul > li div.info-primary > h3 > a')

    for a_ele in a_ele_list:
        # 属性值的获取可以通过类似字典的方式获取
        a_href = a_ele['href']
        # 拼接详情页的链接
        href = parse.urljoin(url, a_href)
        print('详情页的href: ' + href)
        # 重试三次, 获取代理访问boss直聘, 三次没有成功访问就跳过
        for i in range(0,3):
            try:
                # 获取详情页的信息
                get_boss_info(my_ip, href)
                break
            except Exception as e:
                print(e)
                my_ip.update_ip_proxy_str()

def get_all_info(my_ip):
    base_url = 'https://www.zhipin.com/c101010100/h_101010100/?query=python&page=%s&ka=page-%s'
    for i in range(1,4):
        # 每一个分页的url
        url = base_url % (i, i)
        # 循环处理, 如果proxy不好使, 就需要换代理, 如果重试4次依然不好使,就跳过
        for i in range(0, 4):
            try:
                # 循环四次访问boss直聘的网站, 分页的内容
                # get_detail_url(my_ip, url)
                get_detail_url(my_ip, url)
                break
            except Exception as e:
                print(e)
                my_ip.update_ip_proxy_str()

if __name__ == '__main__':
    my_ip = ip_proxy.ip_getter()
    get_all_info(my_ip)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值