爬虫入门学习笔记3

爬虫入门学习笔记3

get()和post()的数据请求

  • 在get()里面叫paramas
  • 在post()里面叫data

尝试动态页面的爬取(豆瓣排名)

老规矩,先附上源代码:

import requests
import json
url='https://movie.douban.com/j/chart/top_list?'
header={
     "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
params = {
     
    'type':'5',
    'interval_id':'100:90',
    'action':'',
    'start': '0',
    'limit':'20'
}
response=requests.get(url=url,headers=header,params=params).content.decode()
res=json.loads(response)
for i in res:
    rating = i['rating'][0]
    rank = i['rank']
    types = i['types']
    typess = ''
    for a in types:
        typess += a
        typess += '/'
    regions = i['regions'][0]
    date = i['release_date']
    title = i['title']
    actors = i['actors']
    actorss = ''
    for b in actors:
        actorss += b
        actorss += '/'
    print('电影名字:' + title)
    print('排名:',rank)
    print('评分:' + rating)
    print('主演:' + actorss)
    print('上映时间:' + date + '/上映地区:' + regions + '/分类:' + typess)
    print('-------------------------------------------------------------------')

失败的尝试

一开始使用xpath来爬取这个文本,但是发现不得行,爬了一个寂寞给我,后来了解到这是一个动态的页面,所以我们回忆起爬取有道翻译怎么操作的

必要信息的提取

  • 打开network勾到XHR,看响应头,发现第三个是有效的信息
    爬虫入门学习笔记3_第1张图片
  • 目标确定,接下来就是获取必要的信息来配置爬虫
  • 找出真正的url
  • 发现提交方式是get
  • 发现返回的是json格式
    爬虫入门学习笔记3_第2张图片
  • 翻到最下面,找到get请求的数据paramas
    爬虫入门学习笔记3_第3张图片

配置好爬虫

  • 之前爬取有道翻译的时候也涉及了json解密。
  • response=requests.get(url=url,headers=header,params=params).content.decode()对于这后面的.content.decode()这里说一下我的理解:由于返回的是json格式,不能用文本方式爬取,所以用最最基本的二进制方式爬取就对了,decode()指的是编码方式,默认就是字符串方式,刚好我们json.loads()就是要处理字符串
import requests
import json
url='https://movie.douban.com/j/chart/top_list?'
header={
     "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
params = {
     
    'type':'5',
    'interval_id':'100:90',
    'action':'',
    'start': '0',
    'limit':'20'
}
response=requests.get(url=url,headers=header,params=params).content.decode()
res=json.loads(response)

数据的处理

  • 解码出来的res是一个列表,列表里面是一个个的字典,每个字典代表一个电影
    爬虫入门学习笔记3_第4张图片
    爬虫入门学习笔记3_第5张图片
  • 由于不美观,所我处理了一个电影好观察字典的键和值的对应关系
    爬虫入门学习笔记3_第6张图片
    这样就一目了然了
    照着这个处理后的字典,数据处理很简单,就不多说了
for i in res:
    rating = i['rating'][0]
    rank = i['rank']
    types = i['types']
    typess = ''
    for a in types:
        typess += a
        typess += '/'
    regions = i['regions'][0]
    date = i['release_date']
    title = i['title']
    actors = i['actors']
    actorss = ''
    for b in actors:
        actorss += b
        actorss += '/'
    print('电影名字:' + title)
    print('排名:',rank)
    print('评分:' + rating)
    print('主演:' + actorss)
    print('上映时间:' + date + '/上映地区:' + regions + '/分类:' + typess)
    print('-------------------------------------------------------------------')

你可能感兴趣的:(python,笔记,python,java,人工智能,数据分析,爬虫)