爬虫豆瓣电影250
2018-11-06 本文已影响0人
不玩手机的蛇佬腔
爬虫第一天
一直都想去学爬虫,因为爬虫可以爬很多很多好玩的东西,比如好看的图片。但是之前总是三天打鱼两天晒网。现在特地来好好地系统学习一下。也算是巩固一下之前的python。不至于荒废了。我可不想只当一个前端程序员。
现在手头上有一个网易云课堂的21天学分布式爬虫的教学视频。之前在京东还买了一本电子书,叫《Python 网络爬虫从入门到实践》,现在开始看起来。然后还有本网上下载的电子书关于Scrapy爬虫的,后面再看吧。
今天(应该是包括昨天晚上)主要是看了书的前三章。练习了爬豆瓣电影TOP250的电影名。我的Python3运行环境是用anaconda3(64bit)的Jupyter notebook,我的浏览器是Chrome。代码如下:
import requests
from bs4 import BeautifulSoup
def get_movies():
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36', #设置请求头,这个头可以从Chrome 按F12查看network,再一次刷新页面的第一个文件左键单击就可以从右边的Header下面的Requeste Header看到,可以直接复制
'Host': 'movie.douban.com' #设置主机名
}
movie_list = []
for i in range(0,10): # 这里需要对每一个页面的地址进行分析才能想到的循环操作
link = 'https://movie.douban.com/top250?start=' + str(i * 25)
r = requests.get(link, headers=headers, timeout= 10)
print (str(i+1),"页响应状态码:", r.status_code) #打印响应码
soup = BeautifulSoup(r.text, "lxml") # 这一部分不是很清楚
div_list = soup.find_all('div', class_='hd')
for each in div_list:
movie = each.a.span.text.strip()
movie_list.append(movie)
return movie_list
print (get_movies())
with open('豆瓣电影TOP250.txt', "w") as f: # 对内容进行保存
for a in get_movies():
f.write(a+'\n')
f.close() #
看了教学视频主要内容如下:
- 爬虫基本流程
- http(s)协议
- url 详解
- 常用请求方法
- 请求头常见参数
- 常见响应状态码
接下来是Python3标准库urllib库中的常见函数:
- request.urlopen 返回网页响应内容
- request.urlretrieve 下载文件
- parser.urlencode 对中文等内容进行编码
- parser.parse_qs 对上面的进行解码
- parser.urlparse/parser.urlsplit 分割url结构
以上就是昨夜今晨的学习内容。