入门第一个爬虫一般都是爬这个,实在是太简单。用了 requests 和 bs4 库。

1、检查网页元素,提取所需要的信息并保存。这个用 bs4 就可以,前面的文章中已经有详细的用法阐述。

2、找到下一个 url 地址。本例中有两种方法,一是通过 url 的规则,本例中通过比较发现,只要更改 url 中的 start 参数值就可以;二是通过下一个页的标签获取下一页的 url。代码中采用了第一种方法。

3、判断退出条件,爬虫不可能无限制循环下去。

在这个最简单的示例中,实现以上三步一个爬虫就完成了。简单到不想做其他说明,直接看代码吧。

"""
爬取豆瓣电影Top250
""" import os
import re
import time
import requests
from bs4 import BeautifulSoup def download(url, page):
print(f"正在爬取:{url}")
html = requests.get(url).text # 这里不加text返回<Response [200]>
soup = BeautifulSoup(html, 'html.parser')
lis = soup.select("ol li")
for li in lis:
index = li.find('em').text
title = li.find('span', class_='title').text
rating = li.find('span', class_='rating_num').text
strInfo = re.search("(?<=<br/>).*?(?=<)", str(li.select_one(".bd p")), re.S | re.M).group().strip()
infos = strInfo.split('/')
year = infos[0].strip()
area = infos[1].strip()
type = infos[2].strip()
write_fo_file(index, title, rating, year, area, type)
page += 25
if page < 250:
time.sleep(2)
download(f"https://movie.douban.com/top250?start={page}&filter=", page) def write_fo_file(index, title, rating, year, area, type):
f = open('movie_top250.csv', 'a')
f.write(f'{index},{title},{rating},{year},{area},{type}\n')
f.closed def main():
if os.path.exists('movie_top250.csv'):
os.remove('movie_top250.csv') url = 'https://movie.douban.com/top250'
download(url, 0)
print("爬取完毕。") if __name__ == '__main__':
main()

相关博文推荐:

Python爬虫实例:爬取猫眼电影——破解字体反爬

Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

Python爬虫实例:爬取豆瓣Top250的更多相关文章

  1. python爬虫+正则表达式实例爬取豆瓣Top250的图片

    直接上全部代码 新手上路代码风格可能不太好 import requests import re from fake_useragent import UserAgent #### 用来伪造爬头部信息 ...

  2. python爬虫实例——爬取歌单

    学习自<<从零开始学python网络爬虫>> 爬取酷狗歌单,保存入csv文件 直接上源代码:(含注释) import requests #用于请求网页获取网页数据 from b ...

  3. 爬虫之爬取豆瓣top250电影排行榜及爬取斗图啦表情包解读及爬虫知识点补充

    今日内容概要 如何将爬取的数据直接导入Excel表格 #如何通过Python代码操作Excel表格 #前戏 import requests import time from openpyxl impo ...

  4. Python爬虫8-ajax爬取豆瓣影榜

    GitHub代码练习地址:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac12_ajax.py 了解ajax 是一种异步请 ...

  5. 简单的爬虫例子——爬取豆瓣Top250的电影的排名、名字、评分、评论数

    爬取思路: url从网页上把代码搞下来bytes decode ---> utf-8 网页内容就是我的待匹配的字符串ret = re.findall(正则,待匹配的字符串), ret 是所有匹配 ...

  6. python轻松入门——爬取豆瓣Top250时出现403报错

    关于爬虫程序的418+403报错. 1.按F12打开"开发者调试页面"如下图所示:按步骤,选中Network,找到使用的接口,获取到浏览器访问的信息. 我们需要把自己的python ...

  7. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  8. 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用

    学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...

  9. 基础爬虫,谁学谁会,用requests、正则表达式爬取豆瓣Top250电影数据!

    爬取豆瓣Top250电影的评分.海报.影评等数据!   本项目是爬虫中最基础的,最简单的一例: 后面会有利用爬虫框架来完成更高级.自动化的爬虫程序.   此项目过程是运用requests请求库来获取h ...

  10. Python爬虫之多线程下载豆瓣Top250电影图片

    爬虫项目介绍   本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示:   本次爬虫项目将分别不使用多线程和使 ...

随机推荐

  1. [R]R包版本更迭【持续更新】

    由于R版本更迭,网上或旧的教材上的包可能没有在维护,或者被其他包替代. 做一个表记录碰到的一些替代方案.个人向,非完整指南. * mvpart 2014年之后不再更新,R 3.0版本后无法安装, 提示 ...

  2. 在虚拟机中安装Centos系统

    1.首先下载VMware 2.然后可以去http://mirrors.aliyun.com下载映像ISO 3.打开VM,点击创建新的虚拟机 4.选择典型模式 5.稍后安装操作系统 6.选择你所要安装的 ...

  3. 打包java程序生成exe

    打包java程序生成exe 目标 我们知道c++的控制台程序编译运行以后就会生成一个exe可执行文件,在电脑上可以直接双击运行,但是java是跨平台的语言,编译运行以后的字节码文件.class是和平台 ...

  4. TS+React+Redux 使用之搭建环境

    使用 create-react-app 构建 1.全局安装create-react-app npm install -g create-react-app 2.创建一个项目 create-react- ...

  5. golang二进制bit位的常用操作

    golang作为一热门的兼顾性能 效率的热门语言,相信很多人都知道,在编程语言排行榜上一直都是很亮眼,作为一门强类型语言,二进制位的操作肯定是避免不了的,数据的最小的单位也就是位,尤其是网络中封包.拆 ...

  6. php代码进行跨域请求处理

    以下的函数作为每个请求的前置操作 (thinkphp框架) public function appInit(&$params) { header('Access-Control-Allow-O ...

  7. JavaScript 深拷贝(deep copy)和浅拷贝(shallow copy)

    参考: [进阶4-1期]详细解析赋值.浅拷贝和深拷贝的区别 How to differentiate between deep and shallow copies in JavaScript 在编程 ...

  8. 删除 id 列表 存进数据库

    当图片写的传id的时候 用着方法存进数据库

  9. pymongo的操作

    实例化和插入 from pymongo import MongoClient class TestMongo: def __init__(self): client = MongoClient(hos ...

  10. python语法_内置函数

    a = filter(函数名,序列) 返回一个迭代器对象/.函数里必须加过滤条件 ret = ['a','b','c','d','e'] def ft(s): if s != 'a': return ...