爬虫python去掉换行符_从零开始学爬虫(一)——豆瓣电影Top250

作为一个男人,你可以对django不感兴趣,但你对各个花花网站的资料收集一定感兴趣。

今天我们用python爬虫来给你打开一扇新世界的大门。

1301c695869f71eb890d99fbd72c29d9.png

一、什么是爬虫

按照一定规则,自动去抓取互联网信息(这里可以是文字、图片、视频等一切你想要得资源)的程序。

简单看一下爬虫的原理:

1、打开浏览器,输入下面网址:

https://movie.douban.com/top250

我们可以在页面上看到每一部电影的相关信息

4899650710cb695a4d118a5f92533d7f.png

2、页面上点击鼠标右键——查看页面源代码

c09e24b217a7d510826019e4e70f0bd4.png

3、精美的页面背后实际上是一串串枯燥的代码,而我们想要的所有信息就藏在这些代码里。

b133d1b391c7ea4d09f5aac71f32ef2a.png

4、爬虫要做的工作就是把代码里的有用信息找出来,再保存到数据库或excel里。

二、爬虫案例

案例:爬取豆瓣电影Top250的基本信息,包括电影的名称、豆瓣评分、评价书、电影概况、电影链接等。

做这个项目的前提是掌握python(pāi shéng)的基本知识和pycharm的使用。

还没有入门的同学,请查看我另一篇教程:

从零开始学python


1、pycharm新建一个python项目:douban

fc5a7cd06c06a245897d2ee200956e8a.png

2、右键新建一个名叫spider的python文件

c6b7219c3fb1ff106dbd7e1a616e940c.png


3、把下面的代码复制到spider.py里:

#coding=utf-8import reimport urllib.request#爬取网页import xlwtfrom bs4 import BeautifulSoup#影片链接的规则findLink = re.compile(r'')#影片图片findImgSrc = re.compile(r',re.S)  #re.S 让换行符包含在字符中#影片片名findTitle = re.compile(r'(.*)')#影片评分findRating = re.compile(r'(.*)')#找到评价人数findJudge = re.compile(r'(\d*)人评价')#找到概况findInq = re.compile(r'(.*)')#影片相关内容findBd = re.compile(r'

(.*?)

',re.S)def getData(baseUrl): datalist = [] for i in range(0,10): #获取前25页的数据 url = baseUrl + str(i*25) #保存获取到的网页源码 html = askURL(url) # 解析数据 soup = BeautifulSoup(html,"html.parser") #找到div,且属性值class=item for item in soup.find_all('div',class_="item"): # print(item) data = [] #保存一部电影的所有信息 item = str(item) #影片链接 link = re.findall(findLink,item)[0] data.append(link) imgsrc = re.findall(findImgSrc, item)[0] data.append(link) titles = re.findall(findTitle, item) if(len(titles) == 2): ctitle = titles[0] #添加中文名 data.append(ctitle) otitle = titles[1].replace("/","") #添加外国名 otitle = "".join(otitle.split()) #去掉\xa0 data.append(otitle) else: data.append(titles[0]) data.append('') #外国名没有就留空 rating = re.findall(findRating, item)[0] data.append(rating) judge = re.findall(findJudge, item)[0] data.append(judge) #概况 inq = re.findall(findInq, item) if len(inq) != 0: inq = inq[0].replace("。","") #去掉句号 inq = "".join(inq.split()) # 去掉\xa0 data.append(inq) else: data.append('') # 概述没有就留空 #影片相关内容 bd = re.findall(findBd, item)[0] bd = re.sub('
(\s+)?'," ",bd) #去掉 bd = re.sub('/', " ", bd) # 去掉/ # bd = "".join(bd.split()) # 去掉\xa0 data.append(bd.strip()) #去掉前后空格 datalist.append(data) #把处理好的一部电影放进datalist print(datalist) return datalist#得到一个指定的URL内容def askURL(url): head = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0" } request = urllib.request.Request(url,headers=head) html = "" try: response = urllib.request.urlopen(request) html = response.read().decode('utf-8') except urllib.error.URLError as e: if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) return html#保存数据到exceldef saveData(datalist,savepath): workbook = xlwt.Workbook(encoding="utf-8") worksheet = workbook.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True) col = ("电影详情链接","图片链接","影片中文名","影片外国名","评分","评价数","概况","相关信息") for i in range(0,8): worksheet.write(0,i,col[i]) for i in range (0,250): print("第%d条"%(i+1)) data = datalist[i] for j in range(0,8): worksheet.write(i+1,j,data[j]) workbook.save(savepath)if __name__ == '__main__': baseUrl = "https://movie.douban.com/top250?start=" datalist = getData(baseUrl) savepath = ".\\豆瓣电影Top250.xls" saveData(datalist,savepath) print("爬取完毕!")

4、鼠标右键点击RUN 'spider'

8b20e9eec5359a28e44701c97c3a125d.png

5、douban文件夹下新生成了一个"豆瓣电影Top250.xls"

2b6a62d7960bfbb7bd27a9315043b28e.png

打开生成的excel,里面就是我们想要的数据。

是不是简单又有趣!

dd14e803f78466e0e0b501d8c8ab05cf.png

6、运行程序的时候可能会报没有安装xx包。只需要在python环境里执行:

pip install xx包

这次我准备换一种方式写教程,先让大家把完整的程序跑起来,下一章再补充BeautifulSoup、Re、Xwlt等知识点。

豆瓣电影已经被我们爬得底裤都不剩了,其他网站还远吗?

60f6112342bf0c9b5f183935ae1f3be1.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值