美文网首页
爬虫爬取招聘网站

爬虫爬取招聘网站

作者: 沫明 | 来源:发表于2018-11-06 14:35 被阅读0次

爬虫爬取智联招聘

        import urllib.parse
        import time
        import datetime
        import re
        import urllib.request
        import urllib.robotparser
        import pymysql
        from selenium import webdriver   #webdriver网页内驱动软件
        
        # 根据域名计算并延迟一定的时间
        class Throttle:
        
            def __init__(self, delay):
                # 访问同域名时需要的间隔时间  delay延期
                self.delay = delay
                # key:netloc,value:lastTime.记录每个域名的上一次访问的时间戳  domains域名
                self.domains = {}
        
            # 计算需要的等待时间,并执行等待
            def wait(self, url):
                if self.delay <= 0:
                    return
        
                domain = urllib.parse.urlparse(url).netloc  #urllib数据 parse解析 urlparse的差别
                lastTime = self.domains.get(domain)        #lastTime上次登陆
        
                if lastTime is not None:
                    # 计算等待时间 wait等待 sec秒  now现在 seconds秒
                    wait_sec = self.delay - (datetime.datetime.now() - lastTime).seconds
                    if wait_sec > 0 :
                        time.sleep(wait_sec)
        
                self.domains[domain] = datetime.datetime.now()
        
        
        # 下载网页
        def download(url, headers={}, proxy=None, retry_count=5):
            print('downloading:' + url)
            request = urllib.request.Request(url, headers=headers)
        
            # 支持代理 proxy代理
            if proxy:
                proxy_handler = urllib.request.ProxyHandler({"http": "http://%(host)s:%(port)d" % proxy})
                opener = urllib.request.build_opener(proxy_handler)
                urllib.request.install_opener(opener)
            try:
                response = urllib.request.urlopen(request)
                html = response.read()
            except urllib.error.URLError as e:
                print(e)
                if hasattr(e, 'code') and 500 <= e.code < 600:
                    return download(url, headers, retry_count - 1)
                return None
        
            return html
        
        #webdriver网页内驱动软件
        driver = webdriver.Chrome(r"D:\chromedriver.exe")
        urlFormat = 'https://sou.zhaopin.com/?p={0}&jl=489' #format格式
        
        num = 1
        while 1:
            driver.get(urlFormat.format(num))
        
            t = Throttle(5)
            t.wait(urlFormat)
        
            num +=1
            print("我是下一个需要爬取的页数:",num)
        
        # 可以通过implicitlywait()方法设置超时时间。
            driver.implicitly_wait(30)
            # 我们设置了30秒的延时。如果我们要查找的元素没有出现,Selenium
            # 至多等待30秒,然后就会抛出异常。要想选取国家链接,我们依然可以使用
            # WebKit示例中用过的那个 css 选择器 。
        
            link1 = driver.find_elements_by_xpath("//div[@class='contentpile__content__wrapper__item clearfix']")
            list_gs =[link.text for link in link1]
        
            #数据保存到文件
            f = open('1.txt','wb')
        
            print(list_gs)
            for i in list_gs:
                print(i)
                f.write((i + '\n\n\n').encode('utf8')) #write写
            f.flush()#保证数据及时从缓存写入本地
        
            #数据保存到数据库
            # print(list_gs)
            # for i in list_gs:
            #     print(i.split()[0])
            #     # 连接数据库,获取连接对象
            #     conn = pymysql.connect(
            #         host="localhost",
            #         port=3306,
            #         user='root',
            #         password='152176',
            #         database='zhilianzhaopin',
            #         charset='utf8'
            #     )
            #
            #     # 获取游标
            #     my_cursor = conn.cursor()
            #
            #     # 添加执行sql语句
            #
            #     sql = "insert into sj(job,username,salary,xueli) values(%s,%s,%s,%s)"
            #     my_cursor.execute(sql, (i.split()[0], i.split()[1], i.split()[2], i.split()[5]))
            #
            #     # 提交事务,关闭连接
            #     conn.commit()
            #     conn.close()

相关文章

网友评论

      本文标题:爬虫爬取招聘网站

      本文链接:https://www.haomeiwen.com/subject/rzluxqtx.html