用python爬取豆瓣网页 您所在的位置:网站首页 豆瓣怎么建立话题 用python爬取豆瓣网页

用python爬取豆瓣网页

2024-07-13 23:08| 来源: 网络整理| 查看: 265

python作为一种已经广泛传播且相对易学的解释型语言,现如今在各方面都有着广泛的应用。而爬虫则是其最为我们耳熟能详的应用,今天笔者就着重针对这一方面进行介绍。

python 语法简要介绍

python 的基础语法大体与c语言相差不大,由于省去了c语言中的指针等较复杂的结构,所以python更被戏称为最适合初学者的语言。而在基础语法之外,python由其庞大的第三方库组成,而其中包含多种模块,而通过模块中包含的各种函数与方法能够帮助我们实现各种各样的功能。

而在python爬虫中,我们需要用到的标准库有:

urllib re bs4 xlwt

其中urllib库可以帮助我们爬取目标网页的html代码,bs4中的beautifulsoup模块以及re库中的正则表达式可以将我们需要的数据从代码中提取出来,而xlwt库可以将数据储存至excel表中,从而最终完成数据的爬取。

接下来,就步入我们此次介绍的重点——完整爬取一个网页的数据。

本篇文章以爬取豆瓣电影top250的数据为例,并将爬取的过程分为三个部分:

1.爬取网页

2.解析网页

3.储存网页

那么,让我们开始吧!

豆瓣top250网址:https://movie.douban.com/top250?start=

爬取网页 import urllib.request

引入urllib库中的request模块

urllib库的基本操作可参考该网址:

https://www.cnblogs.com/qikeyishu/p/10748497.html

def askURL(url): head = { "User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 88.0.4324.182Safari / 537.36" }# 模拟浏览器的登录 request = urllib.request.Request(url,headers=head) #将网页的url和头部信息封装至一起 response = urllib.request.urlopen(request) #获取网页的html代码 html = response.read().decode("utf-8") #将获取的数据转化为utf-8格式 #print(html) #此步可以实验一下能否成功爬取网页的html代码 return html

1.其中urllib.request.Request可以帮我们把要爬取的网页的url及其他的头部信息封装至一起。

2.urlopen函数则可以帮助我们爬取下该网页的html代码

3.有一些网站会设置一下反爬机制来阻止我们的爬虫,此时就需要我们设置头部信息来模拟浏览器访问网站

QQ截图20210406215713

需要用浏览器进入该网址,使用开发者模式获取我们需要的头部信息(也就是该图中的user-agent)

4.最后需要将我们的爬取下的html代码转化为utf-8格式进行输出

解析网页 import re from bs4 import BeautifulSoup

引入re库和bs4库

beautifulsoup模块的基本操作可参考该网址:

http://www.jsphp.net/python/show-24-214-1.html

re库的基本操作可参考该网址:

https://www.runoob.com/python3/python3-reg-expressions.html

def getData(baseurl): datalist = [] #建立一个存放解析出的数据的元组 for i in range(0,10): url = baseurl + str(i*25) # 通过以下两张截图,我们可以发现豆瓣将每25部电影分为一页,共分成了10页、 # 而其url的差别仅在最后加了25,故通过该规律,可将所有10张网页的url全部获取 html = askURL(url) soup = BeautifulSoup(html,"html.parser") #通过beautifulsoup模块自带的html代码解析器进行解析 #并将解析器解析出的数据放至soup中

QQ截图20210403122757QQ截图20210407153132

逐页进行解析,使解析出的数据能被我们接下来要使用的正则表达式识别

所谓正则表达式,就是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑,通过这种过滤,就可以得到我们想要的信息,就例如影片的名称,评分等信息。

findlink = re.compile(r'') # r表示不受转义字符的影响 #该代码通过正则表达式搜寻到所有关于影片链接的数据,以下代码类似 findImgSrc = re.compile(r'


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有