爬虫学习Task1

1.1学习get与post请求

学习目标:

  1. 学习get与post请求,尝试使用requests或者是urllib用get方法向https://www.baidu.com/发出一个请求,并将其返回结果输出。

  2. 如果是断开了网络,再发出申请,结果又是什么。了解申请返回的状态码。

  3. 了解什么是请求头,如何添加请求头。

import requests
#字典格式
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
url = 'https://www.baidu.com/'
response = requests.get(url=url,headers=headers)
#指定编码格式为utf-8,避免出现乱码
response.encoding = 'utf-8'
#以文本的形式打印网页源码
print(response.text)
#以字节流的形式打印网页源码
print(response.content)
#打印响应头
print(response.headers)
#查看网页编码格式
print(response.encoding)

1.2正则表达式

学习目标:

  1. 学习什么是正则表达式并尝试一些正则表达式并进行匹配。

  2. 然后结合requests、re两者的内容爬取https://movie.douban.com/top250里的内容

  3. 要求抓取名次、影片名称、年份、导演等字段。

  4. 参考资料: https://desmonday.github.io/2019/03/02/python爬虫学习-day2正则表达式/

def movie(url):
    #增加请求头,防止被认为是爬虫
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows '
        'NT 10.0; Win64; x64) AppleWebKit/537.36 '
        '(KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
    result = requests.get(url=url,headers=headers)
    #正则匹配电影名次
    rank = re.findall('<em class="">(.*?)</em>',result.text,re.S)
    # print(rank)
    #正则匹配电影名称,[\u4e00-\u9fa5]用于匹配中文字符串
    name = re.findall('<span class="title">([\u4e00-\u9fa5]+)</span>',result.text,re.S)
    # print(name)
    #正则匹配电影国家
    country = re.findall('&nbsp;/&nbsp;([\u4e00-\u9fa5]+)&nbsp;/&nbsp;',result.text,re.S)
    # print(country)
    #正则匹配电影导演
    texts = re.sub('导演:',"",result.text) #将导演字符串替换成空,再用正则匹配
    directs = re.findall('<p class="">(.*?)&nbsp;&nbsp;',texts,re.S)
    # print(directs)
    #正则匹配评分
    scores = re.findall('<span class="rating_num" property="v:average">(.*?)</span>',result.text,re.S)
    # print(scores)

    #zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    for rank,name,country,directs,scores in zip(rank,name,country,directs,scores):
        print(rank,name,country,directs,scores)


if __name__ =="__main__":
    for i in range(0, 100, 25):
        url = 'https://movie.douban.com/top250?start={}&filter='.format(i)
        movie(url)

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老糊涂Lion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值