python2使用bs4爬取騰訊社招過(guò)程解析
目的:獲取騰訊社招這個(gè)頁(yè)面的職位名稱(chēng)及超鏈接 職位類(lèi)別 人數(shù) 地點(diǎn)和發(fā)布時(shí)間
要求:使用bs4進(jìn)行解析,并把結(jié)果以json文件形式存儲(chǔ)
注意:如果直接把python列表沒(méi)有序列化為json數(shù)組,寫(xiě)入到j(luò)son文件,會(huì)產(chǎn)生中文寫(xiě)不進(jìn)去到文件,所以要序列化并進(jìn)行utf-8編碼后寫(xiě)入文件。
# -*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup as bs import json url = 'https://hr.tencent.com/position.php?' params = { 'start':'10' } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } # 獲取騰訊社招某個(gè)頁(yè)面的頁(yè)面源碼 html = requests.get(url, params = params, headers = headers).text # 創(chuàng)建soup對(duì)象,使用lxml解析器 soup = bs(html,'lxml') # 選取類(lèi)名為odd和even的tr標(biāo)簽 result1 = soup.select('tr[class="odd"]') result2 = soup.select('tr[class="even"]') # 列表拼接 l = [1,2] + [3,4],則列表l為[1,2,3,4] result = result1 + result2 # 把數(shù)據(jù)存放在列表里面,列表的每個(gè)元素都為一個(gè)字典 l = [] data = {} for item in result: # 獲取標(biāo)簽的文本內(nèi)容 job = item.find_all('a')[0].get_text().encode('utf-8') category = item.find_all('td')[1].get_text().encode('utf-8') number = item.find_all('td')[2].get_text().encode('utf-8') address = item.find_all('td')[3].get_text().encode('utf-8') public_time = item.find_all('td')[4].get_text().encode('utf-8') # 獲取標(biāo)簽的屬性值 link = item.find_all('a')[0].attrs['href'] fulllink = ('https://hr.tencent.com/' + link).encode('utf-8') data['job'] = job data['category'] = category data['number'] = number data['address'] = address data['public_time'] = public_time data['fulllink'] = fulllink l.append(data) # 原來(lái)中文寫(xiě)不到文件里面的報(bào)錯(cuò)原因,沒(méi)把python列表序列化為json數(shù)組 # with open('tencent.json','a') as f: # f.write(str(data) + '\n') # 方法1存儲(chǔ)數(shù)據(jù),上面字典的值不用先進(jìn)行utf-8編碼 # 把數(shù)據(jù)以json文件形式存儲(chǔ) # f = open('tencent.json','a') # 把python列表序轉(zhuǎn)化為json對(duì)象。本地操作常用的是load dump。網(wǎng)絡(luò)操作常用的loads dumps,而loads常用來(lái)把json格式轉(zhuǎn)化為python格式,dumps把python格式序列為json格式 # dictdata = json.dumps(l,ensure_ascii=False) # 把json對(duì)象寫(xiě)入json文件 # f.write(dictdata.encode('utf-8')) # f.close() # 把數(shù)據(jù)存入tencent.json文件內(nèi) json.dump(l,open('tencent.json','a'),ensure_ascii=False)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python3安裝psycopy2以及遇到問(wèn)題解決方法
在本篇文章里小編給各位分享的是關(guān)于Python3如何安裝psycopy2以及相關(guān)問(wèn)題解決方法,需要的朋友們學(xué)習(xí)下。2019-07-07pytorch geometric的GNN、GCN的節(jié)點(diǎn)分類(lèi)方式
這篇文章主要介紹了pytorch geometric的GNN、GCN的節(jié)點(diǎn)分類(lèi)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Python?中的lambda匿名函數(shù)和三元運(yùn)算符
這篇文章主要介紹了Python?中的lambda匿名函數(shù)和三元運(yùn)算符,使用關(guān)鍵字???lambda???定義,所以匿名函數(shù)又稱(chēng)之為lambda表達(dá)式,下面文章更多相關(guān)內(nèi)容需要的小伙伴可以參考一下2022-04-04Python函數(shù)之zip函數(shù)的介紹與實(shí)際應(yīng)用
zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)之zip函數(shù)實(shí)際應(yīng)用的相關(guān)資料,需要的朋友可以參考下2022-03-03Python集成開(kāi)發(fā)工具Pycharm的安裝和使用詳解
這篇文章主要介紹了Python集成開(kāi)發(fā)工具Pycharm的安裝和使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Python基于argparse與ConfigParser庫(kù)進(jìn)行入?yún)⒔馕雠cini parser
這篇文章主要介紹了Python基于argparse與ConfigParser庫(kù)進(jìn)行入?yún)⒔馕雠cini parser,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02Scrapy框架爬取Boss直聘網(wǎng)Python職位信息的源碼
今天小編就為大家分享一篇關(guān)于Scrapy框架爬取Boss直聘網(wǎng)Python職位信息的源碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Python常用算法學(xué)習(xí)基礎(chǔ)教程
這篇文章主要學(xué)習(xí)Python常用算法,Python常用排序算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一2017-04-04