这篇文章主要介绍了python怎么爬取豆瓣网页,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
python语法简要介绍
python的基础语法大体与c语言相差不大,由于省去了c语言中的指针等较复杂的结构,所以python更被戏称为最适合初学者的语言。而在基础语法之外,python由其庞大的第三方库组成,而其中包含多种模块,而通过模块中包含的各种函数与方法能够帮助我们实现各种各样的功能。
而在python爬虫中,我们需要用到的标准库有:
- <李>
urllib
李> <李>re
李> <李>bs4
李> <李> xlwt
其中urllib库可以帮助我们爬取目标网页的html代码,bs4中的beautifulsoup模块以及再保险库中的正则表达式可以将我们需要的数据从代码中提取出来,而xlwt库可以将数据储存至excel表中,从而最终完成数据的爬取。
接下来,就步入我们此次介绍的重点——完整爬取一个网页的数据。
本篇文章以爬取豆瓣电影top250的数据为例,并将爬取的过程分为三个部分:
1。爬取网页
2。解析网页
3。储存网页
那么,让我们开始吧!
豆瓣top250网址:https://movie.douban.com/top250?开始=
爬取网页
import urllib.request
引入urllib库中请求的模块
urllib库的基本操作可参考该网址:https://www.yisu.com/article/209542.htm
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,头=头) ,,,#将网页的url和头部信息封装至一起 ,,,response =, urllib.request.urlopen(请求) ,,,#获取网页的html代码 ,,,html =, response.read () .decode (“utf-8") ,,,#将获取的数据转化为utf - 8格式 ,,,#打印(html),,,, #此步可以实验一下能否成功爬取网页的html代码 ,,,return html
1。其中urllib.request.Request可以帮我们把要爬取的网页的url及其他的头部信息封装至一起。
2. urlopen函数则可以帮助我们爬取下该网页的html代码
3。有一些网站会设置一下反爬机制来阻止我们的爬虫,此时就需要我们设置头部信息来模拟浏览器访问网站
需要用浏览器进入该网址,使用开发者模式获取我们需要的头部信息(也就是该图中的用户代理)
4。最后需要将我们的爬取下的html代码转化为utf - 8格式进行输出
解析网页
import 再保险 得到bs4 import  BeautifulSoup
引入再保险库和bs4库
def getData (baseurl): ,,,datalist =,[],,, #建立一个存放解析出的数据的元组 ,,,for 小姐:拷贝范围(0,10): ,,,,,,,url =, baseurl +, str(我* 25) ,,,,,,,#,通过以下两张截的图,我们可以发现豆瓣将每25部电影分为一页,共分成了10页, ,,,,,,,#,而其url的差别仅在最后加了25岁,故通过该规律,可将所有10张网页的url全部获取 ,,,,,,,html =, askURL (url) ,,,,,,,soup =, BeautifulSoup (html、“html.parser") ,,,,,,,#通过beautifulsoup模块自带的html代码解析器进行解析 ,,,,,,,#并将解析器解析出的数据放至汤中
逐页进行解析,使解析出的数据能被我们接下来要使用的正则表达式识别
所谓正则表达式,就是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑,通过这种过滤,就可以得到我们想要的信息,就例如影片的名称,评分等信息。
findlink =, re.compile (" # 39; & lt; a  href=https://www.yisu.com/zixun/??)”rel="外部nofollow”>”) # r表示不受转义字符的影响 #该代码通过正则表达式搜寻到所有关于影片链接的数据,以下代码类似 findImgSrc=re.compile (r 'python怎么爬取豆瓣网页