Python爬虫实战----------豆瓣TOP250

*前段时间学习了一些浅显的爬虫知识,防止遗忘写个博客记录一下,如果能帮到其他人是更好的

本篇介绍一下如何一步一步实现使用python爬取豆瓣电影TOP250,博主是个小白,如果内容有误,请将宝贵的建议请留在评论区,谢谢*
源代码在最后面

本篇爬取的数据为静态数据

一、什么是爬虫

网络爬虫就是通过编写程序或脚本模拟人操作浏览器阅览网页。

二、分析

,首先确定需要的数据,我们的目的是爬取豆瓣电影TOP250页面每部电影的详细信息在这里插入图片描述
打开开发者工具找到元素的位置
在这里插入图片描述
此处拿八个数据举例子:海报链接、电影链接、电影中文名、电影外文名、电影制片人员、电影评分、参与电影评分人数、电影总结;

三、编写代码

1、连接页面

要爬取这个页面的数据第一步肯定是访问这个页面。
要访问这个页面需要导入一些包

在这里使用urllib,我将会在另外一篇博客中用爬取全国疫情数据的实例写使用selenium爬取数据的方法。

import urllib.request,urllib.error                   #制定URL,前者获取网页数据,后者返回错误信息

连接页面普通方法:

#得到指定一个URL的网页内容
def askURL(url):										#url为传入函数的参数,代表访问页面的地址''			
    html=""
    response=urllib.request.urlopen(url)				#使用urllib中的方法连接页面
    html=response.read().decode("utf-8")				#建议使用打印一下html,观察返回的是什么
    return html

这种方法直接打开一个网页,网页可以判断到你就是一个程序或者脚本,很多网页都具有反爬机制,这样明显的爬取大概率会被网页禁止访问,并返回403错误

伪装自己的连接页面方法:

def askURL(url):
    header={
   
   "User-Agent":"*****************************************************"}
    request=urllib.request.Request(url,headers=header)
    html=""
    response=urllib.request.urlopen(request)
    html=response.read().decode("utf-8")
    return html

如何伪装自己呢?有一种思路就是访问页面时给网页我们的User-Agent(用户代理)

在这里插入图片描述
获取方法也是通过开发者工具

在这里插入图片描述
将其完整的复制到我们命名的header中
现在就可以用用户代理封装一个访问请求了
request=urllib.request.Request(url,headers=header)
然后再连接网页
response=urllib.request.urlopen(request)

2、获取页面数据

如果你刚才打印了html那么你将会看到在这里插入图片描述
这些都是网页前端的html代码,当然如果只是这样我们还是无法读取数据的
此时需要导入另外一个包

from bs4 import BeautifulSoup                        #网页解析,获取数据

1 获取askURL函数返回的网页数据
2 通过BeautifulSoup解析网页数据
3 通过BeautifulSoup中的.find方法查询目标元素到的位置

  • soup=BeautifulSoup(html,“html.parser”)
  • soup.find_all(‘标签类型’,属性类型_=“属性值”)

4查找每个目的元素,并添加到数组中。
这时我们又需要导入一个包

import re                                            #正则表达式,进行文字匹配
#因为需要的数据数量比较多,为了代码的看读性,统一在全局变量中设置
findLink=re.compile(r'<a href="(.*?)">')                                                #连接
findImage=re.compile(r'<img.*src="(.*?)" width="100"/>',re.S)                           #图片
findTitle=re.compile(r'<span class="title">(.*)</span>')                                #名字
findRating=re.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值