python电影爬⾍背景介绍_Python爬⾍⼊门教程01之爬取⾖瓣
Top电影
前⾔
本⽂的⽂字及图⽚来源于⽹络,仅供学习、交流使⽤,不具有任何商业⽤途,如有问题请及时以作处理
基本开发环境
Python 3.6
Pycharm
相关模块的使⽤
requests
parsel
csv
安装Python并添加到环境变量,pip安装需要的相关模块即可。
爬⾍基本思路
⼀、明确需求
爬取⾖瓣Top250排⾏电影信息电影名字
导演、主演
年份、国家、类型
文章主演的电影评分、评价⼈数
电影简介
⼆、发送请求
Python中的⼤量开源的模块使得编码变的特别简单,我们写爬⾍第⼀个要了解的模块就是requests。
请求url地址,使⽤get请求,添加headers请求头,模拟浏览器请求,⽹页会给你返回response对象
# 模拟浏览器发送请求
import requests
url = 'movie.douban/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = (url=url, headers=headers)
print(response)
200是状态码,表⽰请求成功
2xx (成功)
3xx (重定向)
4xx(请求错误)
5xx(服务器错误)
常见状态码
200 - 服务器成功返回⽹页,客户端请求已成功。
302 - 对象临时移动。服务器⽬前从不同位置的⽹页响应请求,但请求者应继续使⽤原有位置来进⾏以后的请求。
304 - 属于重定向。⾃上次请求后,请求的⽹页未修改过。服务器返回此响应时,不会返回⽹页内容。
401 - 未授权。请求要求⾝份验证。 对于需要登录的⽹页,服务器可能返回此响应。
404 - 未到。服务器不到请求的⽹页。
503 (服务不可⽤) 服务器⽬前⽆法使⽤(由于超载或停机维护)。
通常,这只是暂时状态。
三、获取数据
import requests
url = 'movie.douban/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = (url=url, headers=headers)
)
<(url=url, headers=headers) 请求⽹页返回的是response对象
<: 获取⽹页⽂本数据
response.json: 获取⽹页json数据
这两个是⽤的最多的,当然还有其他的
apparent_encoding cookies history
iter_lines okclose
elapsed is_permanent_redirect json
raise_for_status connection encoding
is_redirect links raw
content headers iter_content
next reasonurl
四、解析数据
常⽤解析数据⽅法: 正则表达式、css选择器、xpath、lxml…
常⽤解析模块:bs4、parsel…
我们使⽤的是 parsel ⽆论是在之前的⽂章,还是说之后的爬⾍系列⽂章,我都会使⽤ parsel 这个解析库,⽆它就是觉得它⽐bs4⾹。
parsel 是第三⽅模块,pip install parsel 安装即可
parsel 可以使⽤ css、xpath、re解析⽅法
所有的电影信息都包含在 li 标签当中。
# 把 ⽂本数据转换成 selector 对象
selector = parsel.)
# 获取所有li标签
lis = selector.css('.grid_view li')
# 遍历出每个li标签内容
for li in lis:
# 获取电影标题 hd 类属性 下⾯的 a 标签下⾯的 第⼀个span标签⾥⾯的⽂本数据 get()输出形式是 字符串获取⼀个 getall() 输出形式是列表获取所有
title = li.css('.hd a span:nth-child(1)::text').get() # get()输出形式是 字符串
movie_list = li.css('.bd p:nth-child(1)::text').getall() # getall() 输出形式是列表