1. 程式人生 > >[python爬蟲]爬取boss直聘並且存到Mysql資料庫裡

[python爬蟲]爬取boss直聘並且存到Mysql資料庫裡

導包

import chardet,re,json,pymysql
from urllib import request,parse

from piaot import *

Mysql

def sql(sql_z):

    # 開啟資料庫連線
    db = pymysql.connect("192.168.43.128", "root", "123456", "boss", charset='utf8')

    # 使用 cursor() 方法建立一個遊標物件 cursor
    cursor = db.cursor()

    # 使用 execute()  方法執行 SQL 查詢
    cursor.execute('')

    # 使用 fetchone() 方法獲取單條資料.
    data = cursor.fetchone(sql_z)

    print("Database version : %s " % data)
    # print(x)
    # 關閉資料庫連線
    db.close()

mysql查詢

def sql_cx(sql_z):

    # 開啟資料庫連線
    db = pymysql.connect("192.168.43.128", "root", "123456", "boss", charset='utf8')

    # 使用 cursor() 方法建立一個遊標物件 cursor
    cursor = db.cursor()

    # 使用 execute()  方法執行 SQL 查詢
    data=cursor.execute(sql_z)

    # print("Database version : %s " % data)

    # 關閉資料庫連線
    db.close()
    return data

查詢城市編號

def chengshi(sheng,shi):
    if shi == None:
        shi=sheng

    url = 'http://www.zhipin.com/common/data/city.json'

    # 呼叫自定義包
    req = yc(url)
    ll = chardet.detect(req)
    html = req.decode(ll['encoding'])

    # 用json解碼
    html=json.loads(html)

    b=[]
    for j in html['data']['cityList']:
        if j['name'] == sheng:
            for i in j['subLevelModelList']:
                if i['name'] == shi:
                    b.append((i['name'],i['code']))

    # 返回格式:['保定',101091100]
    return b

爬取要查詢的名稱列表頁,引數:省/城市,區/縣,查詢內容,頁數

def pq_xx(sheng,qu,nr,ye):

    # 將name值轉成url編碼
    name = parse.quote(nr)
    for i in range(1,ye+1):

        if qu == None:

            # 拼接url地址
            url = 'http://www.zhipin.com/job_detail/?query={}&scity={}&page={}'.format(name,sheng[0][1],ye)

        else:

            # 將城市值轉成url編碼
            qu = parse.quote(qu)
            # 拼接url地址
            url='http://www.zhipin.com/c{}/b_{}-h_{}/?query={}&page={}'.format(sheng[0][1],qu,sheng[0][1],name,ye)

        pq_lb_nr(url)

爬取列表裡的內容

def pq_lb_nr(url):

    req=yc(url)
    ll=chardet.detect(req)
    html=req.decode(ll['encoding'])

    zz='<h3 class="name">\s*?<a href="(.*?)"'

    nr_str=re.compile(zz)

    html=nr_str.findall(html)

    for i in html:
        url_l='http://www.zhipin.com'+i
        pq_nr(url_l)

爬取內容資訊

def pq_nr(url):
   try:
        # 提交申請,呼叫自定義包
        req = yc(url)

        # 自動檢測編碼格式
        ll = chardet.detect(req)

        # 轉碼
        html = req.decode(ll['encoding'])

        # 正則
        zz = 'ka="job-breadcrumb-top4">(.*?)</a>|<span class="time">(.*?)</span>|<span class="badge">(.*?)</span>|<p>(.*?)<em class="vline"></em>(.*?)<em class="vline"></em>(.*?)</p>'
        str_1 = re.compile(zz)
        html_1 = str_1.findall(html)

        # 將獲得標題的資訊進行去除空值
        x = []
        for i in html_1:
            for j in i:
                if j != '':

                    x.append((j.split(':')[-1]))

        x.pop(-2)
        # x值是清洗好的值
        # print(x)

        # 正則,獲得內容裡的崗位職責和任職要求和地址圖片
        zz_1 = 'div class="text">\s*(.*?)\s*?</div>|data-content="(.*?)">\s*<img src="(.*?)" alt='

        ll_2 = re.compile(zz_1)
        html_2 = ll_2.findall(html)

        # 將匹配完的資訊進行清洗,去除<br\>和去空
        x_1 = []
        for i in html_2:
            for j in i:
                if j != '':
                    b = j.replace('<br/>', '')
                    x_1.append((b,))

        # x_1清洗完的值
        # print(x_1)

     # 如果報錯或代理失效
    except:
        # 重新呼叫
        pq_nr(url)

    # sql查詢語句
    sql_cx_str="select uid from boss_cs WHERE uid='{}'".format(url)
    if sql_cx(sql_cx_str) == 0:

        # 進行儲存sql語句
        sql_str="insert into boss_cs(uid,uname,shij,chengshi,jyan,xueli,tozi,gsrshu,yunx,yaoq,gsxx,gsweizhi,weizhitxiang) values('{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}');".format(url,x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x_1[0][0],x_1[1][0]+x_1[2][0],x_1[-2][0],x_1[-1][0])
        print(sql_str)
        # 呼叫mysql
        sql(sql_str)
    else:
        pass

主函式

def boss():

    # 呼叫查詢城市函式
    print('BOSS直聘')

    sheng=input('請輸入你查詢的省:')
    print('--'*20)
    shi=input('請輸入查詢尋城市(預設無):')
    print('--' * 20)
    qu=input('請輸入區或縣(預設:空)')
    print('--' * 20)
    nr=input('請輸入查詢內容:')
    print('--' * 20)
    ye=int(input('請輸入頁數:'))
    if len(shi) == 0:
        shi=None
    if len(qu) == 0:
        qu=None

    url=chengshi(sheng,shi)

    # # 值1是:遍歷出的輸入的城市編號,值2:輸入的區或縣名稱,值3:輸入查詢的內容名稱,值4:頁數
    pq_xx(url,qu,nr,ye)

if name == ‘main‘:

呼叫函式

boss()

相關推薦

[python爬蟲]boss並且Mysql資料庫

導包 import chardet,re,json,pymysql from urllib import request,parse from piaot import * Mysql def sql(sql_z): # 開啟資料庫連線

簡易python爬蟲boss職位,並寫入excel

python爬蟲寫入excel1,默認城市是杭州,代碼如下#! -*-coding:utf-8 -*-from urllib import request, parsefrom bs4 import BeautifulSoupimport datetimeimport xlwt starttime = dat

Python的scrapy之boss

在我們的專案中,單單分析一個51job網站的工作職位可能爬取結果不太理想,所以我又爬取了boss直聘網的工作,不過boss直聘的網站一次只能展示300個職位,所以我們一次也只能爬取300個職位。 jobbossspider.py: # -*- coding: utf-8 -*- import

Python的scrapy之boss網站

在我們的專案中,單單分析一個51job網站的工作職位可能爬取結果不太理想,所以我又爬取了boss直聘網的工作,不過boss直聘的網站一次只能展示300個職位,所以我們一次也只能爬取300個職位。 jobbossspider.py: # -*- coding: utf-8 -*- import scrapy

pythonboss原始碼

說明:登入boss直聘、獲取推薦牛人資訊、篩選牛人,然後進行溝通,目前只能做到溝通,還不能進行繼續交流。 圖片驗證碼目前只能將驗證碼圖片儲存到本地,通過圖片管理器開啟之後手工輸入。 一次登入後,可在會話失效前多次執行牛人推薦溝通 import requests from

python爬蟲ithome的新聞儲存到本地資料庫

爬IT之家首頁的新聞,並讀取每篇新聞,並將新聞存到本地資料庫。 效率不是很高,請求各位大神指點。  from bs4 import BeautifulSoup import urllib.request import re import pymysql conn

pyspider爬蟲框架之boss招聘資訊

需求 需求: 1、 遍歷首頁所有職位分類 2、 點選進入職位分類詳情頁,按照地區抓取,職位名稱,月薪,經驗年限要求,學歷要求,招聘公司,所屬行業,輪次,人數(規模),釋出時間 3、 點選進入職位詳情頁,抓取該職位的技能標籤。 程式碼 程式碼有註釋

python爬蟲QQ說說並且生成詞雲圖,回憶滿滿!

運維開發 網絡 分析 matplot 容易 jieba 編程語言 提示框 然而 Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向對象、直譯式電腦編程語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且

利用python爬蟲圖片並且制作馬賽克拼圖

python爬蟲 splay ise 做事 c-c sea mage item -a   想在妹子生日送妹子一張用零食(或者食物類好看的圖片)拼成的馬賽克拼圖,因此探索了一番= =。   首先需要一個軟件來制作馬賽克拼圖,這裏使用Foto-Mosaik-Edda(網上也有在

爬蟲進階:Scrapy抓boss、拉勾心得經驗

關於使用Scrapy的體會,最明顯的感受就是這種模板化、工程化的腳手架體系,可以說是拿來即可開箱便用,大多僅需按一定的規則套路配置,剩下的就是專注於編寫跟爬蟲業務有關的程式碼。絕大多數的反反爬蟲策略,大多有以下幾種: 忽略robots.txt協議 新增隨機請求

爬蟲之抓 Boss 資料到 Excel 中

宣告:此部落格爬取的資料只為學習爬蟲使用,絕非廣告 程式介紹 檔案目錄 ├── Zhipin_spider # 資料夾 │ ├── spider_main.py # 排程器。是

Python爬蟲-糗事百科段子

hasattr com ima .net header rfi star reason images 閑來無事,學學python爬蟲。 在正式學爬蟲前,簡單學習了下HTML和CSS,了解了網頁的基本結構後,更加快速入門。 1.獲取糗事百科url http://www.qiu

python爬蟲頁面源碼在本頁面展示

一個 nts ring 想要 strip code 空白 列表 ngs python爬蟲在爬取網頁內容時,需要將內容連同內容格式一同爬取過來,然後在自己的web頁面中顯示,自己的web頁面為django框架 首先定義一個變量html,變量值為一段HTML代碼 >&

python 爬蟲 證券之星網站

爬蟲 周末無聊,找點樂子。。。#coding:utf-8 import requests from bs4 import BeautifulSoup import random import time #抓取所需內容 user_agent = ["Mozilla/5.0 (Windows NT 10.0

python爬蟲海量病毒文件

tle format nbsp contex logs request spl tde __name__ 因為工作需要,需要做深度學習識別惡意二進制文件,所以爬一些資源。 # -*- coding: utf-8 -*- import requests import re

Python爬蟲廣州大學教務系統的成績(內網訪問)

enc 用途 css選擇器 狀態 csv文件 表格 area 加密 重要 用Python爬蟲爬取廣州大學教務系統的成績(內網訪問) 在進行爬取前,首先要了解: 1、什麽是CSS選擇器? 每一條css樣式定義由兩部分組成,形式如下: [code] 選擇器{樣式} [/code

python爬蟲——古詩詞

爬蟲 古詩詞 實現目標 1.古詩詞網站爬取唐詩宋詞 2.落地到本地數據庫頁面分析 通過firedebug進行頁面定位: 源碼定位: 根據lxml etree定位div標簽:# 通過 lxml進行頁面分析 response = etree.HTML(data

利用Python爬蟲淘寶商品做數據挖掘分析實戰篇,超詳細教程

實戰 趨勢 fat sts AI top 名稱 2萬 安裝模塊 項目內容 本案例選擇>> 商品類目:沙發; 數量:共100頁 4400個商品; 篩選條件:天貓、銷量從高到低、價格500元以上。 項目目的 1. 對商品標題進行文本分析 詞雲可視化 2.

Python爬蟲 - 百度html代碼前200行

http src mage bsp bubuko str 百度 爬蟲 圖片 Python爬蟲 - 爬取百度html代碼前200行 - 改進版, 增加了對字符串的.strip()處理 Python爬蟲 - 爬取百度html代碼前200行

Python 爬蟲微信文章

微信爬蟲 爬取微信文章 爬取公眾號文章搜狗微信平臺為入口 地址:http://weixin.sogou.com/ --------------------------------------------------------------搜索關鍵詞“科技”對比網址變化情況查看網址http://wei