豆瓣Top250爬取
第一次做爬虫项目,真的开心,非常顺利爬出了豆瓣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爬取的更多相关文章
- Python登录豆瓣并爬取影评
上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自 ...
- 豆瓣电影top250爬取并保存在MongoDB里
首先回顾一下MongoDB的基本操作: 数据库,集合,文档 db,show dbs,use 数据库名,drop 数据库 db.集合名.insert({}) db.集合名.update({条件},{$s ...
- Python 豆瓣mv爬取
爬取网址:https://www.dbmeinv.com/ 豆瓣mv(现已更名) 注:自制力不好的同学,先去准备营养快线! import requests from bs4 import ...
- Python 豆瓣日记爬取
无聊写了个豆瓣日记的小爬虫,requests+bs4. cookies_src可填可不填,主要是为了爬取仅自己可见的日记. url填写的是日记页面,即https://www.douban.com/pe ...
- 《恶魔人crybaby》豆瓣短评爬取
作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...
- selenium 模拟登陆豆瓣,爬取武林外传的短评
selenium 模拟登陆豆瓣,爬去武林外传的短评: 在最开始写爬虫的时候,抓取豆瓣评论,我们从F12里面是可以直接发现接口的,但是最近豆瓣更新,数据是JS异步加载的,所以没有找到合适的方法爬去,于是 ...
- 小试牛刀--利用豆瓣API爬取豆瓣电影top250
最近得赶进度爬点东西,对于豆瓣,它为开发者提供了API,目前是v2版本,目前key不对个人开放,但是可以正常通过其提供的API获取数据.豆瓣V2版API权限分3类:公开.高级.商务,我们用开放基本数据 ...
- python豆瓣250爬取
import requests from bs4 import BeautifulSoup from lxml import etree # qianxiao996精心制作 #博客地址:https:/ ...
- Python3爬取豆瓣网电影信息
# -*- coding:utf-8 -*- """ 一个简单的Python爬虫, 用于抓取豆瓣电影Top前250的电影的名称 Language: Python3.6 ...
随机推荐
- Rocket - debug - TLDebugModuleInner - innerCtrl
https://mp.weixin.qq.com/s/7UY99gEJ8QpVBJIohdqKhA 简单介绍TLDebugModuleInner中innerCtrl相关的寄存器. 1. innerCt ...
- Rocket - util - ReduceOthers
https://mp.weixin.qq.com/s/gbR5fuDbE_nUFVxw-p4rsA 简单介绍ReduceOthers的实现. 1. 基本介绍 输入一组Bool元素 ...
- Mysql多个字段合并成一个返回
可以使用CONCAT函数进行合并: SELECT CONCAT(IFNULL(t1.CITYNAME,''),IFNULL(t1.AREANAME,''),IFNULL(t1.STREETNAME,' ...
- Java实现 蓝桥杯VIP 算法提高 最长公共子序列
算法提高 最长公共子序列 时间限制:1.0s 内存限制:256.0MB 问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格 ...
- Java实现 蓝桥杯VIP 算法提高 3-2字符串输入输出函数
算法提高 3-2字符串输入输出函数 时间限制:1.0s 内存限制:512.0MB 描述 编写函数GetReal和GetString,在main函数中分别调用这两个函数.在读入一个实数和一个字符串后,将 ...
- Java实现 蓝桥杯VIP 算法提高 夺宝奇兵
算法提高 夺宝奇兵 时间限制:1.0s 内存限制:512.0MB [题目描述] 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: ...
- JQuery实现对html结点的操作(创建,添加,删除)
效果图: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...
- 玩转计划任务命令:schtasks
管理计划任务SCHTASKS /parameter [arguments] 描述: 允许管理员创建.删除.查询.更改.运行和中止本地或远程系统上的计划任务. 参数列表: /Create ...
- 用mvc框架查询数据库数据
介绍下mvc框架,mvc框架一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑. 首先我们 ...
- 【Flutter实战】移动技术发展史
老孟导读:大家好,这是[Flutter实战]系列文章的第一篇,这并不是一篇Flutter技术文章,而是介绍智能手机操作系统.跨平台技术的演进以及我对各种跨平台技术看法的文章. 智能手机操作系统 塞班( ...