Python简易网络爬虫开发————小白也能轻松开发

网络爬虫是一个好用的工具,但他也是一把双刃剑,如果使用的好就可以使我们获取信息更加便利,但如果使用方法不当,可能会走上违法的道路。所以我们应该用合理使用网络爬虫。

用Python开发网络爬虫会十分简单,因为它有丰富的第三方库,而我们这此最需要的库就是requests和bs4,所以我们首先需要安装这两个第三方库。

在Python环境 anaconda中输入 pip install requests 和 pip install bs4,如果显示出现有succseefully,就说明安装成功,如果出现有 already satisfied,说明之前已经完成安装。

这次网络爬虫比较简单。我们在豆瓣网爬取了top250的电影,并把它输出了出来。

直接放代码,可以复制粘贴运行试试玩玩。

import requests
from bs4 import BeautifulSoup
head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
for i in range(0,250,25):
    print(i)
    response=requests.get(f"https://www.douban.com/doulist/3936288/?start={i}&sort=time&playable=0&sub_type=",headers=head)
    html = response.text
    soup = BeautifulSoup(html,"html.parser")
    all_title=soup.findAll("div",attrs={"class":"title"})
    for title in all_title:
        for i in title.text:
            if '\u4e00' <= i <= '\u9fff':
                print(i,end="")
        print("\n")

我们一行一行来解释这个代码,这之中会有很多延伸。

import requests
from bs4 import BeautifulSoup

上面这两行就是Python导入包的方法。用import导入。

head={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}

这一行代码是让我们的爬虫伪装成一个浏览器来对网页进行访问,而不是代码。有些网站会防止爬虫来大量访问,所以我们需要把爬虫变成一个浏览器,告诉网站我们是在用一个披着浏览器的爬虫来访问。

下面不是改变User-Agent的例子,我们访问B站试试。

可以看到输出的栏输出了412。412是HTTP状态码之一。下面就是HTTP状态码的返回值所代表的意义。

那接下来把代码伪装成浏览器,这样返回值就为200,成功访问到了网页。

可以点开一个网页,右键之后点击检查,在Network中找到浏览器的User-Agent。

回到我们的代码。


for i in range(0,250,25):
    print(i)
    response=requests.get(f"https://www.douban.com/doulist/3936288/?start={i}&sort=time&playable=0&sub_type=",headers=head)
    html = response.text
   

上面首先来了个for循环,因为这250个电影并不是在一个页面上,而是在不同的页面上,但是网页的链接中我们发现只有start变了,为0,25,50,75,100,125,150,175,200,225。所以我们用一个for循环来分别爬取每一个页面的电影名称。

首先运用requests中的get方法访问网页,存入到response中,再用text方法获取网页中的源码,存入html中。

soup = BeautifulSoup(html,"html.parser")
    all_title=soup.findAll("div",attrs={"class":"title"})
    for title in all_title:
        for i in title.text:
            if '\u4e00' <= i <= '\u9fff':
                print(i,end="")
        print("\n")

接下来用bs4中的BeautifulSoup函数获取我们需要的信息。它所需要的第一个参数是获取内容的地方,上面我们把网页的源代码存入到html中,那么这里就从html中获取信息,第二个参数是告诉它,我们的解析格式为html格式。

all_title=soup.findAll("div",attrs={"class":"title"})
  

要明白上面这行代码,我们需要了解网页原代码的格式。 

这里可以观看B站中一个up主的视频(【07-理论课】HTML有哪些常见标签?_哔哩哔哩_bilibili

只要5分钟就可以明白大概的网页的源代码的格式。

我们观察网页源代码,可以看到这个电影的名字被<div class="title"> </div>给包围住,所以我们只需要查找<div class="title">的中内容就可以爬取出电影的名称。所以就有了上面那行代码。上面的代码把网页中符合要求的源代码都存储在了all_title中。

那我们再来个for循环,分别读取每一篇电影的名字。再对读取出来的内容进行判断,让其只输出中文,这样一个简单的网络爬虫就完成了。

    for title in all_title:
        for i in title.text:
            if '\u4e00' <= i <= '\u9fff':
                print(i,end="")
        print("\n")

 运行效果:

博主也是刚接触爬虫,也是跟着上面链接中的up学习的,如果有什么不了解也可以看她的视频进行更加细致的学习。

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值