python3爬虫模拟登录爬取豆瓣电影数据

前面说一些背景

大佬万福,若有高见,还请不吝赐教。
折腾了一天半,总算解决了豆瓣数据的爬取问题。
-------需要登录和输入验证码才能继续爬数据的问题。

你可以获得数据:

"""
链接: https://pan.baidu.com/s/1StbBu4DDh0dQAwf8Ph5I9g 提取码: up6r 
"""

详细代码可以参照我的github。

"""
lets begin
"""

故事是这样的,我有一份媒资数据表,表里面都是影片数据,包括:导演\演员\影片类型等等.但是这份数据表的数据缺失太多了,也没有对应上最新的豆瓣评分.
为了建立影片之间的相互关系,需要尽可能的补充影片的各项属性.于是,爬取豆瓣数据来丰富该数据表成为首选解决方案.

具体的实现思路,是根据我数据库中的影片名称在豆瓣网站上搜索,寻找最佳topk 匹配的影片信息,然后下载如影片的海报,评分,年份等等信息.

想过用scrapy神框架,但是考虑到我是用一个一个数据进行搜索的,框架带给我的便利不是特别大.再者我对scrapy还不是很熟(其实就看了两天书和几篇博文),所以我毅然放弃此大杀器,用requests和xpath 实现我的需求。

我们发现,当我使用如下网址:“https://movie.douban.com/j/subject_suggest?q=” + “电影名称” (后面加上我的电影名称之后),他会返回给我该电影的信息,或者返回给我该电影从名称上看比较类似的信息.

python3爬虫模拟登录爬取豆瓣电影数据_第1张图片

比如我搜终结者--------------“https://movie.douban.com/j/subject_suggest?q=终结者”

python3爬虫模拟登录爬取豆瓣电影数据_第2张图片
仔细观看网页返回给我的json数据,我发现非常容易就可以解读出电影的海报地址(“img”),以及指向电影的详细信息的链接(“url”).
拿其中的第一条来看:

    {"episode":"",
    "img":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p1910909085.webp",
    "title":"终结者2:审判日",
    "url":"https:\/\/movie.douban.com\/subject\/1291844\/?suggest=%E7%BB%88%E7%BB%93%E8%80%85",
    "type":"movie",
    "year":"1991",
    "sub_title":"Terminator 2: Judgment Day",
    "id":"1291844"},

所以我的行为变得相对简单:
1、将mainURL = “https://movie.douban.com/j/subject_suggest?q=” 和电影名称组合起来,形成mainURL +NAME 的url。
2、request.get 每一个url ,分别获得response。此response的内容是一个json,解析该json即获得海报地址和电影详情页链接m_url。
3、对海报地址和详情页链接稍加处理(变成规范的url形式,基本内容不变。本例中,即把"/" 全部replace为"/" 即可)
4、直接存储海报。(urllib.request.urlretrieve(img,filename)直接存储至本地)
5、继续request.get (m_url) 电影详情页。获得所需要的电影信息。查看源代码,我们知道电影的相关信息都包裹在

你可能感兴趣的:(大数据)