欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python爬虫-AJAX数据爬取和HTTPS访问笔记

程序员文章站 2022-05-05 15:57:03
...

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参数也很少使用了。

相关标签: python爬虫 python