第一次做爬虫项目,真的开心,非常顺利爬出了豆瓣Top250的电影 @^_^@

自从今年6月份就开始自学python,断断续续一直没好好学。直到看了‘’老男孩python3全栈教育‘’,才有所收获。但是这网上的视频没有给我作业,学了就忘,我大概学了一多半python的基础使用之后,决定自己从爬虫学起。开始看崔庆才的教学视频,这个讲的很快,幸好我有看过许多基础,还能够听懂。不过最好从项目直接入手,回过头来再看崔庆才的基础知识教育,更有利于对爬虫的学习。话不多说,直接上代码。

import requests
from requests.exceptions import RequestException
from multiprocessing import Pool
import re
import json def get_one_page(url): # 获取网页的 URL
try:
response = requests.get(url)
if response.status_code == 200: # 得到网页的响应
return response.text
return None
except RequestException:
return None def parse_one_page(html): # 提取出‘电影标题’,‘序列号’,‘评分’
pattern = re.compile('<li>.*?<em class="">(\d+)</em>.*?<span class="title">(.*?)</span>.*?<div class="star">.*?average">(.*?)</span>.*?</li>',re.S)
items = re.findall(pattern, html)
for item in items:
yield{
'index':item[0],
'title':item[1],
'score':item[2]
} def write_to_file(content): # 把提取出来的信息写到文件夹
with open('result.txt','a',encoding='utf8')as f:
f.write(json.dumps(content,ensure_ascii=False)+'\n')
f.close() def main(offset):
url = 'https://movie.douban.com/top250?start=' + str(offset) + '&filter=' # 共提取10个网页内容
html = get_one_page(url) # 每个网页对应的信息代码
for item in parse_one_page(html):
print(item)
write_to_file(item) if __name__ == '__main__':
pool = Pool()
pool.map(main,[i*25 for i in range (10)])

最关键的函数是 parse_one_page(),所要提取的网页内容都由它决定。视频中的教学是让提取猫眼电影的,但由于猫眼电影访问后的response.status_code = 403,因此访问了豆瓣Top250,提取内容的方法是按照崔庆才的视频学的。

代码中的  '.*?'  用来代表任何内容,后面的  're.S’ ,说明  '.*?'  可以代替的内容也包括  ‘\n’ 。最后再把提取的内容写到result.txt的文件中就好了 (^__^)

豆瓣Top250爬取的更多相关文章

  1. Python登录豆瓣并爬取影评

    上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自 ...

  2. 豆瓣电影top250爬取并保存在MongoDB里

    首先回顾一下MongoDB的基本操作: 数据库,集合,文档 db,show dbs,use 数据库名,drop 数据库 db.集合名.insert({}) db.集合名.update({条件},{$s ...

  3. Python 豆瓣mv爬取

    爬取网址:https://www.dbmeinv.com/       豆瓣mv(现已更名) 注:自制力不好的同学,先去准备营养快线! import requests from bs4 import ...

  4. Python 豆瓣日记爬取

    无聊写了个豆瓣日记的小爬虫,requests+bs4. cookies_src可填可不填,主要是为了爬取仅自己可见的日记. url填写的是日记页面,即https://www.douban.com/pe ...

  5. 《恶魔人crybaby》豆瓣短评爬取

    作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...

  6. selenium 模拟登陆豆瓣,爬取武林外传的短评

    selenium 模拟登陆豆瓣,爬去武林外传的短评: 在最开始写爬虫的时候,抓取豆瓣评论,我们从F12里面是可以直接发现接口的,但是最近豆瓣更新,数据是JS异步加载的,所以没有找到合适的方法爬去,于是 ...

  7. 小试牛刀--利用豆瓣API爬取豆瓣电影top250

    最近得赶进度爬点东西,对于豆瓣,它为开发者提供了API,目前是v2版本,目前key不对个人开放,但是可以正常通过其提供的API获取数据.豆瓣V2版API权限分3类:公开.高级.商务,我们用开放基本数据 ...

  8. python豆瓣250爬取

    import requests from bs4 import BeautifulSoup from lxml import etree # qianxiao996精心制作 #博客地址:https:/ ...

  9. Python3爬取豆瓣网电影信息

      # -*- coding:utf-8 -*- """ 一个简单的Python爬虫, 用于抓取豆瓣电影Top前250的电影的名称 Language: Python3.6 ...

随机推荐

  1. ArcCore重构-打通Can各层ID配置

    https://mp.weixin.qq.com/s/JX7VZwyMqk_9iVMm_N2pxA https://mp.weixin.qq.com/s/5Y8Dt9j1-NQmnjfYhE19dg ...

  2. jchdl - RTL Module

    https://mp.weixin.qq.com/s/Sr4ffU4TPPoUJpdInwWd6w ​​ jchdl Module类在概念上对应Verilog的module,作为所有用户自定义模块的父 ...

  3. Java实现 LeetCode 523 连续的子数组和(ง •_•)ง

    523. 连续的子数组和 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示 ...

  4. Java实现 LeetCode 141 环形链表

    141. 环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...

  5. Java实现蓝桥杯二项式的系数规律

    二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学家杨辉1261年所著的<详解九章算法>一书里就出现了. 其排列规律: 1 1 1 2 1 3 3 1 4 6 4 ...

  6. 一篇文章快速入门React框架

    视频教程 本文章在B站配有视频教程 课程目标 了解最常用的React概念和相关术语,例如JSX,组件,属性(Props),状态(state). 构建一个非常简单的React应用程序,以阐述上述概念. ...

  7. k8s-ephemeral和init容器

    截止到目前k8s1.18版本,k8s已经支持四种类型的container:标准容器,sidecar容器,init容器,ephemeral容器. 一:ephemeral容器 1.1.什么是ephemer ...

  8. How to delete a directory recursively in Java

    在java8或更高版本中,使用NIO API递归删除一个非空目录: try { // 创建stream流 Stream<Path> file = Files.walk(Paths.get( ...

  9. 防止暴力破解-DenyHosts应用

    当你的linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令.   你会发现,每天会有多条SSH登录失败纪录.那些扫描工具将对你的服务器构成威胁,你必须 ...

  10. php 常用的redis操作语法

    String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-> ...