要求:使用bs4進行解析,並把結果以json檔案形式儲存
注意:如果直接把python列表沒有序列化為json陣列,寫入到json檔案,會產生中文寫不進去到檔案,所以要序列化並進行utf-8編碼後寫入檔案。
# -*- coding:utf-8 -*-
import requests
from bs4 i程式設計客棧mport beautifulsoup as bs
import json
url = ''
params =
headers =
# 獲取騰訊社招某個頁面的頁面原始碼
html = requests.get(url, params = params, headers = headers).text
# 建立so物件,使用lxml解析器
soup = bs(html,'lxml')
# 選取類名為odd和even的tr標籤程式設計客棧
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
# 把資料存放在列表裡面,列表的每個元素都為乙個字典
l =
data = {}
for item in result:
# 獲取標籤的文字內容
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')
# 獲取標籤的屬性值
link = item.find_all('a')[0].attrs['href']
fulllink = ('' + 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)
# 原來中文寫不到檔案裡面的報錯原因,沒把python列表序列化為json陣列
# with open('tencent.json','a') as f:
# f.write(str(data) + '\n')
# 方法1儲存資料,上面字典的值不用先進行utf-8編碼
# 把資料以json檔案形式儲存
# f = open('tencent.json','a')
# 把程式設計客棧ucuadkspython列表序轉化為json物件。本地操作常用的是load dump。網路操作常用的loads dumps,而loads常用來把json格式轉化為python格式,dumps把python格式序列為json格式
# dictdata = json.dumps(l,ensure_ascii=false)
# 把json物件寫入json檔案
# f.write(dictdata.encode('utf-8'))
# f.close()
# 把資料存入tencent.json檔案內
json.dump(l,open('tencent.json','a'),ensure_ascii=false)
本文標題: python2使用bs4爬取騰訊社招過程解析
本文位址:
python2使用bs4爬取騰訊社招
要求 使用bs4進行解析,並把結果以json檔案形式儲存 注意 如果直接把python列表沒有序列化為json陣列,寫入到json檔案,會產生中文寫不進去到檔案,所以要序列化並進行utf 8編碼後寫入檔案。coding utf 8 import requests from bs4 import be...
bs4爬取網頁基礎
import requests from bs4 import beautifulsoup def getsoup url try r requests.get url,timeout 30 r.raise for status print r.text 很亂 soup beautifulsoup ...
BS4爬取豆瓣電影
爬取豆瓣top250部電影 建立表 connect.py from sqlalchemy import create engine hostname localhost port 3306 username root password 123456 database douban db url my...