python超详细的基础爬虫(思路分析)

python超详细的基础爬虫
环境:python3
工具:pycharm
第三方库:requests,BeautifulSoup
python的环境部署在这里就不再赘述,第三方库的安装可以用pip下载,也可以在pycharm中install安装,个人比较喜欢用第二种方式在这里插入图片描述

开始爬取(以豆瓣电影Top250为例)

开始之前先看看网站页面构成
在这里插入图片描述
我们可以看到电影名字在class='hd’下的div标签下的a标签下的class='title’的span标签中,但是注意到这里相同类型的标签有两个,分别是中文名与原名,我们先爬取下来看看结果吧

先导入第三方库

import requests
from bs4 import BeautifulSoup

先看看调试的代码吧,打印出来看看是不是想要的电影名

        url="https://movie.douban.com/top250" #目标url地址
        headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'} #请求头
        soup=requests.get(url=url,headers=headers).text  #获取到网页内容
        soup_one= BeautifulSoup(soup, "html.parser")  #解析网页,固定格式
        move_title=soup_one.find('span',class_="title")  #定位标签
        print(move_title.string)

在这里插入图片描述编码格式错误,pycharm默认编码格式是utf8,那不行就换gbk,只需要在代码开头指定一下编码格式就好了

#coding:utf8
import requests
from bs4 import BeautifulSoup
def top250():
        url="https://movie.douban.com/top250" #目标url地址
        headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'} #请求头
        soup=requests.get(url=url,headers=headers).text  #获取到网页内容
        soup_one= BeautifulSoup(soup, "html.parser")  #解析网页,固定格式
        move_title=soup_one.find('span',class_="title")  #定位标签
        print(move_title.string)
top250()

在这里插入图片描述
打印出来就是我们想要的标题了,find方法只会找到第一个满足条件的标签,我们再把第一页的电影名爬取出来看看,用find_all方法。因为我们定位的标签中会有电影的原名,所以打印出来时总会报编码错误,我们就把结果写入本地文件看看

#coding:utf8
import requests
from bs4 import BeautifulSoup
def top250():
        url="https://movie.douban.com/top250" #目标url地址
        headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'} #请求头
        soup=requests.get(url=url,headers=headers).text  #获取到网页内容
        soup_one= BeautifulSoup(soup, "html.parser")  #解析网页,固定格式
        move_title=soup_one.find_all('span',class_="title")  #定位标签
        with open("./movemane_list.txt", 'a', encoding='utf8') as f:
                for i in move_title:
                        f.write(str(i.string)+'\n')
top250()

在这里插入图片描述
这里的爬取结果就是电影中文翻译名与原名,这里我们只要电影中文名就好了,所以我们换个位置看看有没有电影中文名的
在这里插入图片描述我们搜索一下发现这个img标签中有电影封面的图片地址,同时也包含电影名
那我们爬取下来看看呢

move_title=soup_one.find_all('img')

在这里插入图片描述确实是我们要的结果,可是最后两个不是我们想要的,那我们就不直接去定位img标签,通过img的父标签定位看看

        move_title=soup_one.find_all('div',class_='pic')  #定位标签
        with open("./movemane_list.txt", 'a', encoding='utf8') as f:
                for i in move_title:
                        f.write(str(i.a.img)+'\n')

如果一个标签x包含子标签y,那我们可以通过x.y的标签名来定位到这个标签
在这里插入图片描述现在结果就是我们想看到的了
可是我们要的是Top250所有的电影名称,这时候我们就需要找出每一页url地址的规律来一页一页的循环爬取
https://movie.douban.com/top250?start=25&filter= 这是第二页的url地址
https://movie.douban.com/top250?start=50&filter= 这是第三页的url地址
不难看出每页显示25个电影,一共十页

#coding:utf8
import requests
from bs4 import BeautifulSoup
def top250():
        for i in range(0,10):
                url="https://movie.douban.com/top250?start=%s"%(i*25) #目标url地址
                headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0'} #请求头
                soup=requests.get(url=url,headers=headers).text  #获取到网页内容
                soup_one= BeautifulSoup(soup, "html.parser")  #解析网页,固定格式
                move_title=soup_one.find_all('div',class_='pic')  #定位标签
                with open("./movemane_list.txt", 'a', encoding='utf8') as f:
                        for i in move_title:
                                title=str(i.a.img).split('alt="')[1].split('"')[0]
                                f.write(title+'\n')
top250()

以上是全部代码
有不对的地方欢迎留言指正
喜欢我的小伙伴可以关注我哦,我会不定期分享爬虫学习心得

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,简单介绍下网络爬虫   网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到这个网站所有的网页都抓取完为止。实际上,由于抓取技术的限制以及存储技术、处理技术的限制,要完全抓取网站的所有网页是不可能的,也是不实际的!本着从用户需要为出发点,实际需要抓取的网页往往是有限的,只需抓取符合用户要求的网页即可! 抓取网页的策略 在抓取网页的时候,网络爬虫一般有两种策略(即两种搜索方法),广度优先和深度优先。 广度优先:是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有页面。这是最常用的方式,广度优先的搜索策略可以并行处理,提高抓取速度。 深度优先:是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种策略较易实现,但是抓取速度慢。 由于一般不可能抓取网站的所有链接,一般会设置访问层数,即搜索深度。起始页的深度为0,起始页中的链接url深度为1,依此类推。 构造C#语言的爬虫程序 C#已经封装了HTTP访问和多线程,这对编写网络爬虫提供了方便,而要C#网络爬虫程序需要解决以下问题: HTML分析:需要某种HTML解析器来分析爬虫程序遇到的每一个页面。 页面处理:需要处理每一个下载得到的页面。下载得到的内容需要保存起来,以便进一步分析处理。
### 回答1: Python爬虫毕业设计任务书 一、任务的背景及意义: 随着互联网的不断发展和日益普及,大量的数据和信息存储在各种网站中,通过爬虫技术能够从网页上获取所需的数据并进行进一步的分析和利用。因此,本毕业设计旨在通过使用Python编写一个简单的爬虫程序,来获取特定网站上的数据,提高数据的使用效率和获取速度。 二、任务的目标和内容: 1. 爬取网页数据:通过编写Python爬虫程序,对一个或多个特定网站的数据进行爬取。 2. 数据的处理和存储:对爬取到的数据进行初步的处理(如去重、清洗、格式转换等),并将其存储到数据库或文件中,实现数据的持久化。 3. 网页解析和数据提取:使用Python的相关库或工具,对爬取的网页进行解析,提取所需的数据字段,并进行相应的处理。 4. 可视化展示:将爬取和处理后的数据通过可视化方式展示出来,使得数据更加直观和易于理解。 三、任务的步骤和计划: 1. 确定爬取目标:选择一个或多个特定网站作为爬取的目标,明确所需要获取的数据类型和字段。 2. 设计爬虫程序:根据爬取目标和需求,设计爬虫程序的结构和流程,确定使用的Python爬虫框架和相关库。 3. 编写爬虫程序:根据设计,使用Python编写爬虫程序,实现对目标网站的数据爬取和处理。 4. 数据存储和处理:对爬取到的数据进行初步处理和存储,如去重、清洗、格式转换等,然后将其存储到数据库或文件中。 5. 网页解析和数据提取:使用Python的相关库或工具,对爬取的网页进行解析,提取所需的数据字段,并进行相应的处理。 6. 数据可视化展示:通过使用Python的数据可视化库,将处理后的数据以图表、图形等方式进行展示。 7. 编写实验报告:根据整个毕业设计的过程,编写详细的实验报告,包括设计思路、实验步骤、代码实现、结果分析等。 四、任务的预期成果: 1. 完整的Python爬虫程序,具备稳定的爬取能力和数据处理能力。 2. 完成对指定网站的数据爬取和初步处理,实现数据的持久化存储。 3. 实现对爬取的网页的解析和数据字段提取。 4. 以可视化方式展示处理后的数据,使得数据更加直观和易于理解。 5. 完整的实验报告,详细记录整个毕业设计的过程和结果。 通过完成此任务,可以提高对Python爬虫技术的理解和应用能力,使得数据获取和处理更加高效和便捷,为后续的数据分析和挖掘工作打下基础。同时,也可以提高软件工程实践能力和团队合作能力。 ### 回答2: Python爬虫毕业设计任务书: 任务目标: 设计和开发一个基于Python爬虫程序,能够自动从指定的网站上爬取并提取信息,然后进行数据分析和可视化。 任务要求: 1. 网站选择:根据自己兴趣和实际需求,选择一个合适的网站作为爬取的目标。 2. 爬虫程序设计:使用Python编写爬虫程序,能够自动登录网站并模拟浏览器行为进行信息抓取。 3. 数据提取:从网站上提取所需的文本、图片、视频等信息,并进行数据清洗和处理。 4. 数据存储:将爬取的数据保存到数据库或文件中,以备后续使用。 5. 数据分析与可视化:利用Python的数据分析和可视化库,对爬取的数据进行分析和展示,生成可视化报告。 6. 页面展示:设计一个简洁美观的网页,将爬取的数据呈现在网页上,方便用户查看和搜索。 任务步骤: 1. 确定毕业设计题目和选题理由,明确所要爬取的网站和目标数据。 2. 进行需求分析,确定所需的功能和技术要求。 3. 学习Python爬虫技术,掌握相关的库和工具。 4. 设计数据库结构,确定存储方式和数据表的字段。 5. 编写爬虫程序的框架,实现自动登录、信息抓取和数据提取功能。 6. 开发数据分析和可视化模块,对爬取的数据进行处理和展示。 7. 设计前端网页,实现页面展示和搜索功能。 8. 测试和调试各个模块,确保整个系统的稳定性和功能完整性。 9. 撰写毕业设计论文,包括设计思路、技术实现和结果分析等部分。 10. 进行答辩和评分,根据评分结果进行论文修改和改进。 任务时间安排: 1. 需求分析和选题确定:1周 2. 技术学习和准备:2周 3. 爬虫程序开发和数据处理:4周 4. 数据分析和可视化:2周 5. 前端网页设计和实现:2周 6. 系统测试和论文撰写:3周 总结: 本设计通过使用Python编写爬虫程序,实现了对指定网站的信息抓取、数据提取、数据分析与可视化以及网页展示的功能。经过前期的需求分析和技术准备,项目按照时间安排有序进行,并最终得到稳定的系统和详细的毕业设计论文。在完成毕业设计的过程中,我不仅学到了Python爬虫的相关知识和技术,还提升了独立解决问题和项目管理的能力,为未来的工作和学习奠定了良好基础

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值