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
參數也很少使用了。