• python爬虫自学首次大捷


    前言

            自学python,首次接触到爬虫的东西,整个过程全部自己查找资料,熟悉每个模块功能,最终完成了爬取某排名前250电影名。

            后面直接展示的是两种方法的完整代码,就懒得分开写了,有坑的地方也有标注,有问题或者学习交流可以找博主公众号微信都行。

            代码肯定不是最优,仅供学习使用,不做其他任何非法用途!

    一、用到模块介绍

    1、requests

            Requests模块是一个用于网络请求的模块,主要用来模拟浏览器发请求。

    2、re

            Re模块主要是用来调用正则表达式用的。

    3、beautifsoup4

            Beautiful Soup (简称bs4)是一个可以从HTML或XML文件中提取数据的Python库。提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。

    4、xlwings

            可以处理Excel文件的Python模块有很多,xlwings模块的功能是最齐全的。它不仅能读写和修改,而且能批量处理多个Excel文件。此外,xlwing模块还能与Exce VBA结合使用。

    5、time

            time模块包含用于获取当前时间 、操作时间和日期、从字符串中读取日期、将日期格式化为字符串函数。

    6、random

            Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。

    7、模块的安装调用

    1. # 模块安装
    2. pip install 模块名字
    3. # 模块调用
    4. import 模块名字
    5. # 其中beautisoup4调用时用bs4

    二、爬取某排名前250电影名

    1、用整正则表达式获取(方法一)

    用正则表达式相对来说没有用标签来的舒服,所以一般建议用第二种方法;

    1. # coding=utf8
    2. # @time:2022/5/16 15:12
    3. import random
    4. import requests,re
    5. # 1.通过正则表达式获取某排名前250的电影名字
    6. url = 'https://movie.XXXX.com/top250'
    7. ua = {'User-Agent':'Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'}
    8. r = requests.get(url,headers=ua)
    9. # print(r.status_code)
    10. # print(r.text)
    11. pattern = re.compile(r'\<span class="title"\>.*?\<\/span\>')
    12. print(len(pattern.findall(r.text)))

    效果展示:

    2、通过bs4获取某排名前250的电影名字,并且输入到excle表格中(方法二)

    1. # 将获取的排名250的电影写入到excle表格中(爬取电影)
    2. import requests,bs4,time
    3. import xlwings as xw
    4. # 这里有个坑,成功下载beatifulsoup4,但是导入时不能导入beautisoup4,只能写bs4;
    5. app = xw.App(add_book=False,visible=True)
    6. wb = app.books.open('爬取电影.xlsx')
    7. sht = wb.sheets['sheet1']
    8. span_list = []
    9. for page in range(10):
    10. url = f'https://movie.XXXX.com/top250?start={page*25}' # 加f表示字符串内支持大括号内的python表达式
    11. ua = {'User-Agent':'Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'}
    12. r = requests.get(url,headers=ua)
    13. soup = bs4.BeautifulSoup(r.text,'html.parser')
    14. # print(soup)
    15. spans = soup.select('div.hd>a>span:nth-child(1)')
    16. temp_list = []
    17. i = 0
    18. for span in spans:
    19. span_list.append(span.text)
    20. time.sleep(random.randint(3,5))
    21. sht.range('a2').options(transpose=True).value=span_list
    22. wb.save()
    23. wb.close()
    24. app.quit()

    效果展示:

    更多安全分享,请关注【安全info】微信公众号!

  • 相关阅读:
    c—线性表
    文本分析:NLP 魔法!
    如何使用virtualenv的虚拟环境
    Linux知识复习第2期
    超全总结!大模型算法面试指南(含答案)
    详解硬盘的接口、总线和协议
    KNN 算法【python,机器学习,算法】
    hi3861A上手记录
    Prometheus简单理解
    【DSP】时域中的离散时间信号 -- MATLAB实现序列的运算
  • 原文地址:https://blog.csdn.net/WEARE001/article/details/124824307