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)文章
Python輸入輸出從鍵盤(pán)到文件實(shí)戰(zhàn)全面指南
這篇文章主要為大家介紹了Python輸入輸出從鍵盤(pán)到文件實(shí)戰(zhàn)全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Python?操作Excel-openpyxl模塊用法實(shí)例
openpyxl 模塊是一個(gè)讀寫(xiě) Excel 2010 文檔的 Python 庫(kù),如果要處理更早格式的 Excel 文 檔,需要用到額外的庫(kù),openpyxl 是一個(gè)比較綜合的工具,能夠同時(shí)讀取和修改 Excel 文檔,這篇文章主要介紹了Python?操作Excel-openpyxl模塊使用,需要的朋友可以參考下2023-05-05
python機(jī)器學(xué)習(xí)Sklearn實(shí)戰(zhàn)adaboost算法示例詳解
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)Sklearn實(shí)戰(zhàn)adaboost算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11
使用Python將PDF表格提取到文本,CSV和Excel文件中
本文將介紹如何使用簡(jiǎn)單的Python代碼從PDF文檔中提取表格數(shù)據(jù)并將其寫(xiě)入文本、CSV和Excel文件,從而輕松實(shí)現(xiàn)PDF表格的自動(dòng)化提取,有需要的可以參考下2024-11-11
使用python將微信image下.dat文件解密為.png的方法
這篇文章主要介紹了使用python將微信image下.dat文件解密為.png的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
python正則實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了python正則實(shí)現(xiàn)計(jì)算器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
python pandas dataframe如何獲取除了指定列以外的所有列
這篇文章主要介紹了python pandas dataframe如何獲取除了指定列以外的所有列問(wèn)題,具有很好的參考價(jià)值,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

