python爬蟲-AJAX數據爬取和HTTPS訪問筆記

https://movie.douban.com/j/search_subjects?type=movie&tag=熱門&page_limit=10&page_start=0

對需要爬取的連接進行分析,獲得以下需要URL編碼的標籤
type=movie電影標籤
tag=熱門電影下的熱門板塊
page_limil=10可以獲取不同數量的信息
page_start=0開始位置


from urllib.parse import urlencode
from urllib.request import urlopen, Request
import simplejson

ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
# 對怕爬蟲進行僞裝,也可以設置UA池進行僞裝,使服務器更難分辨爬蟲
jurl = 'https://movie.douban.com/j/search_subjects'

d = {
    'type': 'movie',
    'tag': '熱門',
    'page_limit': '10',
    'page_start': '0'
}

req = Request('{}?{}'.format(jurl, urlencode(d)), headers={
    'User-agent': ua
})

with urlopen(req) as res:
    subjects = simplejson.loads(res.read())
    print(len(subjects['subjects']))
    print(subjects)

HTTPS證書忽略

from urllib.request import Request, urlopen

request = Request('https://www.12306.cn/mormhweb/')
request.add_header(
    "User_agent",
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
)

with urlopen(request) as res:
    print(res._method)
    print(res.read())

P.S. 課程中出現 ssl.CertificateError 錯誤,原因是當時12306並未進行CA認證,現在已經修復。

對於不安全的https網站,可以導入ssl模塊,忽略證書不安全信息

from urllib.request import Request, urlopen
import ssl

request = Request('https://www.12306.cn/mormhweb/')
request.add_header(
    "User_agent",
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
)

# 忽略不信任的證書
context = ssl._create_unverified_context()

with urlopen(request, context=context) as res:
    # context參數,實現SSL加密傳輸。
    print(res._method)
    print(res.read())

現在來說大部分網站都已經完成了CA認證,所以urlopen中的context參數也很少使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章