python爬虫简易到进阶实战篇——(1)
python简易实战(1)——猫眼top100
第一篇文章介绍python基本环境搭建,简单实战,希望我们一同进步。
首先,对于初学者,python相比于c、java语言较容易入手,而写爬虫更是简单了不止一星半点。
而对于刚入手的同学来说,根据本人的经验,搭建python对应的编译环境可能相比写程序更复杂。
写程序的话,要上手python简易爬虫只需认真看一篇b站或者某教学网站的爬虫实战视频就可以上手,例如像静态网站那样不需要过多的分析网页。
所以,我先介绍一下python爬虫开发所需要的前提:
①.首先当然是下载python,因为版本的更新,现在大多数爬虫都是3.多版本,本人用的是3.6版本,网站的话百度一个进官网下载即可,当初下载的时候好像没有什么大的问题。
②.其次是python爬虫所要用到的库,我习惯用requests库,它比python自带的urllib库更简单,对于这些第三方库,我建议下载一个Anaconda,下载后安装教程https://jingyan.baidu.com/article/3f16e0031e87522591c10320.html,它覆盖了python开发所需的大量的库,这样我们写程序导入第三方库时能省临时下载的时间。
③.想要快速上手,IDE是一个很好的东西,pycharm是受大部分学习python的人认同的IDE之一,它分为社区版和企业版,企业版是收费的而社区版是免费的,对于我们平常写的爬虫用社区版就足够了。
④.第四步,我个人理解这一步为:搭建编译环境。如何把我们下载的编译程序导入我们的IDE工作台,在这里我简单说明,在pycharm中打开File→Settings→Project→Project interpreter,在箭头处选择编译环境,如果不出意外应该是下面的样子。
搭建完环境后就可以写简单的爬虫了。
下面给出经典爬取猫眼电影top100的爬虫,后面有相应注释:
#__author:'lwq'
#date: 2018/8/22
import requests #对网页进行请求
from bs4 import BeautifulSoup #网页解析库
# 因为第一次,就不用函数形式
for i in range(0,100,10): #0到100以10为步长,range总是考虑后面的数减步长
url = 'http://maoyan.com/board/4?offset={}'.format(i) #猫眼top100数据所在网页
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} #因为猫眼对爬虫或许有反爬措施,所以这里进行简单的处理,将我们的爬虫伪装成是人访问
response = requests.get(url,headers = headers) #对网页进行请求并返回值
html = response.text #将网页内容以html返回
soup = BeautifulSoup(html,'lxml') #解析网页的一种方法
name = soup.find_all('p',class_="name") #对电影名字的定位
score = soup.find_all('p',class_="score") #对电影评分的定位
time = soup.find_all('p',class_="releasetime") #对电影上映时间的定位
artist = soup.find_all('p',class_="star") #对主演的定位
dic = {} #创建一个字典,用来储存
for n in range(len(name)) : #对于每一部电影进行同样的内容处理
# print(name[n].text) #实现提取电影名字
# print(artist[n].text.strip()[3:]) #获取主演名字
# print(time[n].text[5:]) #上映时间
# print(score[n].text) #评分
dic['name'] = name[n].text
dic['star'] = artist[n].text.strip()[3:]
dic['showtime'] = time[n].text[5:]
dic['score'] = score[n].text
print(dic) #输出字典
符号#表示注释改行,通过这个简单的代码就可能获取我们想要的猫眼电影top100了,快去试试看吧。
运行后结果部分如下:
还有我是一个半路出家的和尚,只学过c和java(还没有学好),python是自学,如果有大佬有更简易的处理方案,希望告诉我这个萌新,希望和你们一起进步。