豆瓣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 - tilelink - Metadata
https://mp.weixin.qq.com/s/Dyb1XipJtdhGa9mktXXjCg 简单介绍Metadata的实现. 1. 基本介绍 Metadata是一个Bun ...
- (Java实现) 洛谷 P1071 潜伏者
题目描述 R国和 S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S国的 R 国间谍小 C终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过 ...
- Java实现 蓝桥杯 算法训练 求平方和
试题 算法训练 求平方和 问题描述 请用函数重载实现整型和浮点习型的两个数的平方和计算 输入格式 测试数据的输入一定会满足的格式. 2 2(2行2列,第1行整型,第2行浮点型) 输出格式 要求用户的输 ...
- Java实现 LeetCode 705 设计哈希集合(使用数组保存有没有被用过)
705. 设计哈希集合 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中 ...
- Java实现 LeetCode 458 可怜的小猪
458. 可怜的小猪 有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水.它们从外观看起来都一样.如果小猪喝了毒药,它会在 15 分钟内死去. 问题来了,如果需要你在一小时内,弄清楚哪 ...
- Java实现计数排序
1 问题描述 给定一组数据,请使用计数排序,得到这组数据从小到大的排序序列. 2 解决方案 2.1比较计数排序 下面算法的时间复杂度为O(n^2),空间复杂度为O(n).此方法对于任意一组数据均可排序 ...
- java实现第六届蓝桥杯熊怪吃核桃
熊怪吃核桃 题目描述 森林里有一只熊怪,很爱吃核桃.不过它有个习惯,每次都把找到的核桃分成相等的两份,吃掉一份,留一份.如果不能等分,熊怪就会扔掉一个核桃再分.第二天再继续这个过程,直到最后剩一个核桃 ...
- redis 分布式锁的简单使用
RedisLock--让 Redis 分布式锁变得简单 目录 1. 项目介绍 2. 快速使用 2.1 引入 maven 坐标 2.2 注册 RedisLock 2.3 使用 3. 参与贡献 4. 联系 ...
- 一口气说出9种分布式ID生成方式,面试官有点懵
一.为什么要用分布式ID? 在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征? 1.1.什么是分布式ID? 拿MySQL数据库举个栗子:在我们业务数据量不 ...
- MySQL查询优化利刃-EXPLAIN
有一个 ? 遇到这样一个疑问:当where中In一个索引字段,那么在查询中还会使用到索引吗? SELECT * FROM table_name WHERE column_index in (expr) ...