這是什么?
是一個(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)
[北京] [盈米財(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,偏工具組
等等...這只是一頁的數(shù)據(jù).