爬虫代码学习

Posted hjl123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫代码学习相关的知识,希望对你有一定的参考价值。

1、while循环补充

import time
num = 0
# 第一层循环
while True:
    print(第一层循环)

    # 第二层循环
    while True:
        print(第二层循环)

        # 第三层循环
        while True:
            time.sleep(1)
            print(第三层循环)
            print(num)
            num += 1
            continue
            print(结束本次循环,继续进入本层循环)




# for 循环
# list1 = [1, 2, 3]
# for x in list1:
#    print(x)

# range(0, 10) 0---> (10-1)
# range(开始位置,结束位置)
# 0-9
print(range(10))

for x in range(1, 10):
    print(x)

2、字符串的内置方法

str1 = 墙里的想着出去,墙外的人想着进来

# 索引取值
print(len(str1))
print(str1[9])  #

# 切片
# 获取str1中的 "墙外的人" 四个字
# range(8, 12)  # 8-11
# [8:12]   顾头不顾尾  尾巴-1
print(str1[8:12])   # 墙外的人

# 长度len
print(len(str1))

# 成员运算in\not in
print( in str1)  # True, 判断进字是否在sr1里面
print( not in str1)  # False

# 移除空白strip
username = input(请输入用户名:)
print(username)
# 移除username两边的空格
username = username.strip()
print(username)

str2 = 墨:菲:定:律
# 切分split(切分的规则)
# list1 = []
# for x in str2:
#     print(x)
#     list1.append(x)
# print(list1)
list1 = str2.split(:)
print(list1)

# lower&upper 大小写
str3 = aabbCC
# 把str3的字母都变成小写
lower_str3 = str3.lower()
print(lower_str3)   # aabbcc

# 把str3的字母都变成大写
upper_str3 = str3.upper()
print(upper_str3)   #  AABBCC

# startswith&endswith 判断字符的开头或结尾是否是什么
str4 = tank是一个文质彬彬的靓仔
print(str4.startswith(tank))  # True
print(str4.startswith(DSB))   # False

print(str4.endswith(靓仔))    # True
print(str4.endswith(sb))      # False


# replace: 替换.replace(旧,新)
str5 = 吕连杰说,有个人很帅啊,他是徐峰啊!
str5 = str5.replace(徐峰, tank)
print(str5)

# isdigit: 判断字符是否是数字
str6 = 24124141
print(str6.isdigit())    # True

3、列表的内置方法

# 列表的内置方法

list1 = [tank, 18, tank]

# append
list1.append(male)
print(list1)

# count: 计算列表中的数量
print(list1.count(tank))   # 2


‘‘‘
字典的内置方法
‘‘‘
# dict1:
#    name = ‘tank‘
#    age = 18
dict1 = name: tank, age: 18

print(dict1[name])
# 若key不存在则报错
# print(dict1[‘name1‘])

# get特点是key没有默认返回None
print(dict1.get(name1))   # None

4、文件处理

‘‘‘
文本读写

字符编码
    美国:
        ASCCI

    中国:
        GBK   ‘安徽财贸‘

    日本....

    总结: 必须统一字符编码--> utf-8

‘‘‘

# 写文件
# with open(‘安财贸.txt‘, ‘w‘, encoding=‘utf-8‘) as f:
#    str1 = ‘tank很帅,真的啊!‘
#    f.write(str1)

# 读文件
# with open(‘安财贸‘, ‘r‘, encoding=‘utf-8‘) as f:
#    str1 = f.read()
#    print(str1)




‘‘‘
读写二进制流数据:bytes  read + bytes  rb
‘‘‘
with open(xiao泽.mp4, rb) as f:
    data = f.read()
    print(data)




‘‘‘
爬取cang老师图片,并保存到本地。
    1.导入requests模块
        下载:
            注意: 必须联网
            方式一:
                pip3 install requests
            方式二:
                file->settings->project->interpreter->‘绿色的+‘
                再输入框内输入 ---> requests -->  install package

        import requests

    2.使用requests爬取图片并保存
        - 1)下载图片
        - 2)保存图片
‘‘‘

import requests
# 1)下载图片
# requests.get(‘数据的链接‘)
# 往cang老师图片地址发送请求获取响应数据
response = requests.get(https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign=4c9bf08f04f41bd5da53eff269e1e6f6/d439b6003af33a87d8d517becc5c10385243b5dd.jpg)

# content就是获取图片的二进制流数据
print(response.content)

# 2)保存数据
# 读取二进制流数据  write + bytes  wb
with open(cang老师.jpg, wb) as f:

    # f.write(传入二进制流的数据)
    f.write()

5、爬取电影视频

‘‘‘
爬虫三部曲:
    1.发送请求
    2.解析数据
    3.保存数据
‘‘‘

import requests

# 1.发送请求
response = requests.get(http://sz-download.weiyun.com/ftn_handler/22a0ec1b5d65cbdcfa1f2383105026c55eca9c3fd872abd9a648d05277a3a70e/%E6%83%8A%E5%A5%87%E9%98%9F%E9%95%BF.mp4)

# 2.解析数据  此时不需要解析,因为是直接爬取视频的数据
print(response.content)

# 3.保存数据
with open(惊奇队长.mp4, wb) as f:
    f.write(response.content)

6、爬取想要的数据

‘‘‘
爬取豆瓣电影TOP250:
    第一页:
        https://movie.douban.com/top250?start=0&filter=

    第二页:
        https://movie.douban.com/top250?start=25&filter=

    第十页:
        https://movie.douban.com/top250?start=225&filter=

‘‘‘
import requests
import re  # 导入正则模块

# 1.拼接电影爬取地址url
num = 0
for line in range(10):
    url = https://movie.douban.com/top250?start=%s&filter= % (num,)
    num += 25
    # print(url)

    # 2.往拼接完的url地址发送请求获取数据
    response = requests.get(url)
    # print(response.text)  # 获取文本数据

    # 3.解析并提取数据
    # 电影名称、电影地址、电影评分、评价人数
    # re.findall(‘匹配文本的规则‘, ‘匹配的文本‘, ‘匹配模式‘)  # 解析提取文本数据中 想要的数据
    ‘‘‘
    .*?: 过滤不想要的数据,直到想要的数据出现
    (.*?): 提取想要的数据

    # 匹配规则
    <div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>

    ‘‘‘
    data = re.findall(
        <div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>,
        response.text, re.S)  # re.S忽略换行
    # print(data)

    for d in data:
        # print(d)

        url, name, point, count = d

        movie_data = ‘‘‘
        电影名称: %s
        电影地址: %s
        电影评分: %s
        评价人数: %s
        \n
        ‘‘‘ % (name, url, point, count)

        print(movie_data)

        # 4.保存数据
        # a: append
        with open(豆瓣.txt, a, encoding=utf-8) as f:
            f.write(movie_data)

 

以上是关于爬虫代码学习的主要内容,如果未能解决你的问题,请参考以下文章

爬虫代码学习

网络爬虫学习小组·第一课 | Python安装基本语法与JupyterLab代码编辑器配置

Python网络爬虫学习手记——爬虫基础

深度学习与爬虫实例教学--深度学习模型构建和训练

2023爬虫学习笔记 -- 优化xpath解析代码

总结整理 -- 爬虫技术(C#版)