1. 程式人生 > >爬蟲記(一) - 傳送網路請求,解析JSON與靜態HTML

爬蟲記(一) - 傳送網路請求,解析JSON與靜態HTML

1.傳送網路請求

 

import requests

r = requests.Session()
headers = {'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0'}
data = dict(username='123', password='456')
result = r.get('http://abc.com/login', headers=headers, params = data)
print(result.text)

2.解析JSON資料

import json

group_json = json.loads("{JSON字串}")

json.loads

Deserialize s (a str, bytes or bytearray instance containing a JSON document) to a Python object using this conversion table.

反序列化(解析)一個包含JSON文件的字串=>Python物件.

json.load

Deserialize fp (a .read()-supporting text file or binary file containing a JSON document) to a Python object using this conversion table.

解析一個檔案(解析包含JSON文件的文字檔案或者二進位制檔案)=>Python物件.

主要資料: 使用Python解析JSON詳解 - 落葉的部落格 - 部落格園

個人感覺Python中的JSON解析最智慧的是, 能夠生成Dict和List組合的物件, 比其它強型別語言的JSON解析更加智慧.

3.解析HTML資料

主要參考資料: python爬蟲之PyQuery的基本使用 - Charles.L - 部落格園

PyQuery的輸入有三種①字串②檔案③網站

 - 原文第1節: python字串3個引號是支援換行

PyQuery的查詢:與JQuery類似,基於標籤(直接寫)、CSS類(.類名)、ID(#ID名)等進行查詢, 在例子中發現類名用[].

- <PyQuery物件>('篩選條件')

- 之前做過H5開發,對這些比較熟悉

值的獲取:①屬性: <PyQuery物件>.attr.屬性名, 或<PyQuery物件>.attr("屬性名")②內容<PyQuery物件>.text()

操作: ①增刪屬性addClass(), removeClass()②修改/新增屬性attr('key','val'), 新增修改css('key','val')③刪除標籤<>.find('篩選條件').remove()