記一個(gè)入門級的Python爬蟲

這是什么?

是一個(gè)入門級python小爬蟲.爬取testhome最新一頁招聘的簡單信息.

直接上代碼:

from requests_html import HTMLSession

def save(data):
    title = data.get('title')
    href =  data['href']
    with open('jobs.md', 'a+') as f:
        f.write("\n[{title}]({href})\n".format(title=title, href=href))

def start():
    session = HTMLSession()
    response = session.get('https://testerhome.com/jobs')
    jobs = response.html.find(selector='.panel-body', first=True)
    for job in jobs.find('.title a'):
        data = job.attrs
        data['href'] = job.absolute_links.pop()
        save(data)


if __name__ == '__main__':
    start()

解釋

from requests_html import HTMLSession

引入庫,庫的Doc在這.隨后,實(shí)例化一個(gè)HTMLSession對象.

response = session.get('https://testerhome.com/jobs')
jobs = response.html.find(selector='.panel-body', first=True)
for job in jobs.find('.title a'):
    data = job.attrs
    #  獲取絕對地址,返回的是set數(shù)據(jù),將之賦值到data中的href即可
    data['href'] = job.absolute_links.pop()     
    save(data)

接著,get方法打開目標(biāo)網(wǎng)頁,得到一個(gè)response.通過閱讀上面提到的Doc官方文檔,可以學(xué)習(xí)到response實(shí)現(xiàn)的接口.

每一個(gè)網(wǎng)頁鏈接,請求返回回來的數(shù)據(jù),可以理解為一大串看得眼花繚亂的字符串.在瀏覽器中加載css文件,提供樣式.加載JavaScript文件,提供交互,最后渲染出賞心悅目的頁面.而數(shù)據(jù),在頁面中展示出來.

當(dāng)前這個(gè)爬蟲,則通過response.html.find()與css選擇器,去獲取類名為panel-body的元素,以及此元素內(nèi)部的數(shù)據(jù).

什么是css和JavaScript?

如果你想要了解什么是css和JavaScript,W3C歡迎你.

first設(shè)置為True,應(yīng)該是讓css選擇器只選中第一個(gè)類名為panel-body的元素及其內(nèi)部數(shù)據(jù).

for job in jobs.find('.title a'):
    data = job.attrs
    data['href'] = job.absolute_links.pop()
    save(data)

通過遍歷獲取到的類名為panel-body的元素?cái)?shù)據(jù),再查找內(nèi)部類名為title下的a元素,得到結(jié)果列表中每一個(gè)item.再通過attrs屬性得到dict類型的數(shù)據(jù).

為什么是dict類型的數(shù)據(jù)?

print(type(job.attrs)) 即可知道type.再此調(diào)用save函數(shù),save函數(shù)對dict數(shù)據(jù)進(jìn)行解析.

def save(data):
    title = data.get('title')
    href = data('href')
    with open('jobs.md', 'a+') as f:
        f.write("\n[{title}]({href})\n".format(title=title, href=href))

最后解析到title和招聘詳細(xì)信息的鏈接.

markdown 格式很漂亮,如果你不知道的話,就太可惜了

通過python的IO方法,保存為markdown數(shù)據(jù)格式.

最后還有...

還有什么來著,忘了.對了,再次重申,這是一個(gè)Python入門級爬蟲demo

還有,對于這個(gè)爬蟲,有很多地方需要改進(jìn).如果你有興趣的話.
就這樣.如果有問題,留言吧,謝謝.

附上數(shù)據(jù):

[內(nèi)推][深圳][上海] 大疆創(chuàng)新科技有限公司 多種測試崗位 [新增云臺(tái)測試崗]

[北京] 滴滴出行 招聘服務(wù)端測試開發(fā)工程師 若干 西二旗軟件園 (薪資:10-40k)

[上海] 依圖科技 招聘 - 系統(tǒng)測試開發(fā)工程師,基礎(chǔ)架構(gòu)測試開發(fā)工程師 / 1 ~ 5 年工作經(jīng)驗(yàn)

[上海] 抖音——招聘測試工程師、測試開發(fā)工程師

[北京] [盈米財(cái)富] 招聘初 / 中級測試開發(fā)工程師 (1 名)

多點(diǎn) Dmall 技術(shù)中心招聘 測試工程師 10K-20K / 成都 / 經(jīng)驗(yàn) 3-5年 / 本科及以上 / 全職

廣州大型互聯(lián)網(wǎng)公司招聘測試總監(jiān)

[OPPO 深圳] 展望 2019 全新崗位招聘-互聯(lián)網(wǎng)- 測試工程師 / 測試專家 / 測試開發(fā) / 算法工程師 [以下崗位長期有效]

[完成] 美團(tuán)點(diǎn)評招人~薪資 25k~40k,偏工具組

[南京] 美篇招聘客戶端 / 服務(wù)端測試工程師

等等...這只是一頁的數(shù)據(jù).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容