爬取豆瓣Top250电影的评分、海报、影评等数据!

  本项目是爬虫中最基础的,最简单的一例;

后面会有利用爬虫框架来完成更高级、自动化的爬虫程序。

  此项目过程是运用requests请求库来获取html,再用正则表达式来解析从中获取所需数据。

话不多说,直接上代码,盘! (具体代码解释在代码旁边)

1.加载包,requests请求库,re是正则表达式的包,json是后面来把字典序列化的包;

#请求库:requests 解析工具:正则表达式
import requests
import re
import json
import time
2.用requests库通过url获取响应,得到html文本。
def get_one_page(url):
#头部的定义,自己在网页中可以获取(网页右击检查,network中的header)
headers={
'User-Agent':'ozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E5216a QQ/7.5.5.426 V1_IPH_SQ_7.5.5_1_APP_A Pixel/1080 Core/UIWebView Device/Apple(iPhone 8Plus) NetType/WIFI QBWebViewType/1'
}
response=requests.get(url,headers=headers)
if response.status_code==200: #只有status_code为200时才表示响应正确
return response.text
return None
3.用正则表达式从html中匹配出想要数据
def parse_one_page(html):
#re.compile是把正则化字符串对象化,方便复用。
pattern=re.compile('<li>.*?<em\sclass.*?>(.*?)</em>.*?<img.*? src="(.*?)".*?title">(.*?)<.*?<p class="">(.*?)</p>.*?rating_num.*?>(.*?)<.*?<span>(.*?)</span>.*?.*?inq">(.*?)<.*?</li>',re.S)
items=re.findall(pattern,html)
#列表形成字典(通过findall获取的数据是一条条记录,形成一个列表) for item in items:
yield{'index':item[0], #电影排名
'image':item[1], #电影海报
'title':item[2], #电影名称
'actor':item[3], #电影导演,主演
'score':item[4], #评分
'people_num':item[5], #多少人评价
'evaluate':item[6] #影评
}
4.把获得的数据存入到txt文件当中去

def write_to_file(content):
#创建或打开result.txt以追加的读写方式写入数据
with open('result.txt','a',encoding='utf-8') as f:
print(json.dumps(content,ensure_ascii=False)) #json.dumps()用于把字典序列化,方便写入txt文件
f.write(json.dumps(content,ensure_ascii=False)+'\n')
5.通过改变url中start的值来实现换页,进行下一页的切换。
def main(start):
#更换url中的start值来切换页面,具体更换的数值要更具实际情况而变
url='https://movie.douban.com/top250?start='+str(start)+'&filter='
html=get_one_page(url)
for item in parse_one_page(html):
write_to_file(item) if __name__=='__main__':
for i in range(10):
start=i*25
main(start)
time.sleep(1)#防止请求过快被网页检测出来,休眠1秒

  本文所有代码复制可以直接运行欧!

基础爬虫,谁学谁会,用requests、正则表达式爬取豆瓣Top250电影数据!的更多相关文章

  1. requests爬取豆瓣top250电影信息

    ''' 1.爬取豆瓣top250电影信息 - 第一页: https://movie.douban.com/top250?start=0&filter= - 第二页: https://movie ...

  2. python爬虫知识点总结(九)Requests+正则表达式爬取猫眼电影

    一.爬取流程 二.代码演示 #-*- coding: UTF-8 -*- #_author:AlexCthon #mail:alexcthon@163.com #date:2018/8/3 impor ...

  3. Scrapy爬虫入门系列4抓取豆瓣Top250电影数据

    豆瓣有些电影页面需要登录才能查看. 目录 [隐藏]  1 创建工程 2 定义Item 3 编写爬虫(Spider) 4 存储数据 5 配置文件 6 艺搜参考 创建工程 scrapy startproj ...

  4. 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片

    需要着重学习的地方:(1)爬取分页数据时,url链接的构建(2)保存json格式数据到文件,中文显示问题(3)线程池的使用(4)正则表达式的写法(5)根据图片url链接下载图片并保存(6)MongoD ...

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

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

  6. Python爬虫学习==>第十章:使用Requests+正则表达式爬取猫眼电影

    学习目的: 通过一个一个简单的爬虫应用,初窥门径. 正式步骤 Step1:流程框架 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果: 正则表达式分析:根据html ...

  7. 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP

    爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...

  8. PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)

    利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...

  9. requests+正则爬取豆瓣图书

    #requests+正则爬取豆瓣图书 import requests import re def get_html(url): headers = {'User-Agent':'Mozilla/5.0 ...

随机推荐

  1. PostgreSQL创建表及约束

    创建表 语法: create table table_name ( column_name type column_constraint, table_constraint table_constra ...

  2. Ubuntu 12.04 Openssh 安装过程

    1.输入 apt-get install openssh-server 注意 出现依赖 需要使用 查看依赖是否需要,如果不需要可以直接删除,sudo apt-get remove XXXX 或者sud ...

  3. 快速排序 JAVA实现

    快速排序 每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边.快速排序是不稳定的,时间复杂度(平均):nlogn public class ...

  4. lambda 、 map 、filter 、reduce 及 reversed 常用函数

    lambda 匿名函数 什么是lambda? lambda 操作符(或 lambda 函数)通常用来创建小巧的,一次性的匿名函数对象.它的基本语法如下: lambda arguments : expr ...

  5. 解决修改完系统默认python版本后yum不可用的问题!!!!!!

    文章转自: http://www.linuxidc.com/Linux/2013-05/84727.htm #vi /usr/bin/yum 将文件头部的: #!/usr/bin/python 改为: ...

  6. jmeter 之 BeanShell PostProcessor跨线程全局变量使用

    BeanShell PostProcessor是用户对一些变量的操作,操作方法很灵活,大概原理是通过parameters传回来对象,然后在script中对对象进行操作 场景:从登陆接口中获取token ...

  7. Spring Boot Cookbook 中文笔记

    Spring Boot Cookbook 一.Spring Boot 入门 Spring Boot的自动配置.Command-line Runner RESTful by Spring Boot wi ...

  8. leetcode-374-Guess Number Higher or Lower(二分查找)

    题目描述: We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have t ...

  9. 电信10兆指的是多少Mbps

    一般电信10兆(10Mbps)指的是:下载速度最大在1.25MB/s 1Mbps(兆位/秒)     =     0.125MB/S(兆字节/秒) 8Mbps(兆位/秒)     =     1MB/ ...

  10. HDU - 4630 离线处理区间点对问题

    题意:给定\(a[1...n]\),多次询问\([L,R]\)中的任意一对数使得\(gcd(a_i,a_j)\)最大 对于gcd,区间内至少存在两个相同的因子才能作为合法的解,存在两个相同因子且最大就 ...