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、模块的安装调用

# 模块安装
pip install 模块名字
# 模块调用
import 模块名字

# 其中beautisoup4调用时用bs4

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

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

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

# coding=utf8
# @time:2022/5/16 15:12

import random
import requests,re

# 1.通过正则表达式获取某排名前250的电影名字

url = 'https://movie.XXXX.com/top250'
ua = {'User-Agent':'Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'}
r = requests.get(url,headers=ua)

# print(r.status_code)
# print(r.text)

pattern = re.compile(r'\<span class="title"\>.*?\<\/span\>')
print(len(pattern.findall(r.text)))

效果展示:

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

# 将获取的排名250的电影写入到excle表格中(爬取电影)
import requests,bs4,time
import xlwings as xw
# 这里有个坑,成功下载beatifulsoup4,但是导入时不能导入beautisoup4,只能写bs4;

app = xw.App(add_book=False,visible=True)
wb = app.books.open('爬取电影.xlsx')
sht = wb.sheets['sheet1']

span_list = []
for page in range(10):
    url = f'https://movie.XXXX.com/top250?start={page*25}'    # 加f表示字符串内支持大括号内的python表达式
    ua = {'User-Agent':'Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'}
    r = requests.get(url,headers=ua)

    soup = bs4.BeautifulSoup(r.text,'html.parser')
    # print(soup)
    spans = soup.select('div.hd>a>span:nth-child(1)')
    temp_list = []
    i = 0

    for span in spans:
        span_list.append(span.text)
    time.sleep(random.randint(3,5))

sht.range('a2').options(transpose=True).value=span_list


wb.save()
wb.close()
app.quit()

效果展示:

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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流浪法师12

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

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

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

打赏作者

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

抵扣说明:

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

余额充值