爬虫

首先我们在网站中打开我们要爬的网站
“http://maoyan.com/board/4”
这就是豆瓣高分电影前100的榜单.

然后我们点击f12,再刷新一次,就可以看到网页的基本信息了。
这时候我们来看一下第一部‘我不是药神中的代码信息。’

一个dd节点为一个电影的全部信息。
我们用正则表达式的方法去分析上面的代码,首先是class为board-index的排名信息。
我们用正则表达式应该是这么去写

<dd>.*?board-index.*?>(.*?)</i>

那我们接着分析第二部分的图片,我们看图片的节点一共有两点:两个img节点。
我们发现第二个img节点属性为data-src为图片链接,所以我们就分析这部分。
我们用正则表达式应该是这么去写

.*?data.src="(.*?)"

以此类推我们接着分析剩下所有的信息。
第三部分为电影名,电影名在p节点的class=name下面。
我们用正则表达式应该这么写

.*?name".*?a.*?>(.*?)</a>

那么接下来我们就写一个完整的信息:分别记录了排名,照片,名字,演员,时间,评分。

<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star".*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>

那我们就可以正式一步一步去做一份爬取任务了:
1.导入库:

import json
import requests
from requests.exceptions import RequestException
import re
import time   #time库是用来延时访问,某些网站设置了反爬,不能快速连续访问该网站

2.抓取首页:

def get_one_page(url):try:headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'}response = requests.get(url, headers=headers)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return None

3.正则提取:

def parse_one_page(html):pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'+ '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'+ '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)items = re.findall(pattern, html)for item in items:yield {'index': item[0],'image': item[1],'title': item[2],'actor': item[3].strip()[3:],'time': item[4].strip()[5:],'score': item[5] + item[6]}

4.写入文件:

def write_to_file(content):with open('result.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False) + '\n')

5.分页爬取:

我们可以看到,一页有10个电影。那我们爬取TOP100,则需要看10页的电影内容。

当我们切到下一页的时候,我们发现网站名称后多了offset=10.第三页的时候则是offest=20.
那我们就明白了,我们可以根据offest来对TOP100进行分页爬虫。

def main(offset):url = 'http://maoyan.com/board/4?offset=' + str(offset)html = get_one_page(url)for item in parse_one_page(html):print(item)write_to_file(item)
if __name__ == '__main__':for i in range(10):main(offset=i * 10)time.sleep(1) #猫眼多了反爬虫,所以我们要延时等待。

完整代码:

import json
import requests
from requests.exceptions import RequestException
import re
import timedef get_one_page(url):try:headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'}response = requests.get(url, headers=headers)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return Nonedef parse_one_page(html):pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'+ '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'+ '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)items = re.findall(pattern, html)for item in items:yield {'index': item[0],'image': item[1],'title': item[2],'actor': item[3].strip()[3:],'time': item[4].strip()[5:],'score': item[5] + item[6]}def write_to_file(content):with open('result.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False) + '\n')def main(offset):url = 'http://maoyan.com/board/4?offset=' + str(offset)html = get_one_page(url)for item in parse_one_page(html):print(item)write_to_file(item)if __name__ == '__main__':for i in range(10):main(offset=i * 10)time.sleep(1)

如果爬取过程中发现只爬取到了前10或者前20的内容就停止了。
那我们回到TOP100的网页,发现了他让我们进行图片的验证(反爬虫)
由于我们现在还没学到解决这类问题的方法。
所以我们自己进入网页验证完之后,再运行一次就能成功了。

爬取豆瓣电影TOP100相关推荐

  1. 爬虫+词云:爬取豆瓣电影top100的导演制作图云

    前段时间做了一个关于豆瓣电影的爬虫,之后又写了一个陈奕迅歌词的词云制作,于是我想不如做一个关于豆瓣高分电影导演的词云试试,于是有了接下来这篇随笔. 首先,我需要知道豆瓣top100电影详情页面的url ...

  2. python xpath爬取电影top100_python爬取豆瓣电影top250

    爬取豆瓣电影top250比猫眼top100复杂了一点点,这里主要使用到的工具是BeautifulSoup网页解析库和正则表达式,个人认为,对于静态网页的爬取,Xpath查询语句和正则表达式是最有力的武 ...

  3. 爬取豆瓣电影排名前250部电影并且存入Mongo数据库

    2019独角兽企业重金招聘Python工程师标准>>> 需求:爬取豆瓣电影top250(https://movie.douban.com/top250)的电影数据: 标题(title ...

  4. python爬取豆瓣电影top250_Python爬虫 - scrapy - 爬取豆瓣电影TOP250

    0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例.所以找了很多实 ...

  5. day02:requests爬取豆瓣电影信息

    一.requests爬取豆瓣电影信息 -请求url: https://movie.douban.com/top250 -请求方式: get -请求头: user-agent cookies二.sele ...

  6. Requests库实战(三)---爬取豆瓣电影详细信息

    完整代码 爬取豆瓣电影的详细信息 地址:豆瓣电影动画 向下滑动时新增的数据也是Ajax请求,原理和上一个项目是一样的.唯一的不同是此处请求url携带了多个参数 import requests impo ...

  7. 猫眼html源码,50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...

  8. python爬虫慕课网利用xpath_python爬虫实践——零基础快速入门(二)爬取豆瓣电影...

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  9. python如何爬取豆瓣_Python实战之如何爬取豆瓣电影?本文教你

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  10. python爬取豆瓣电影top250_用Python爬虫实现爬取豆瓣电影Top250

    用Python爬虫实现爬取豆瓣电影Top250 #爬取 豆瓣电影Top250 #250个电影 ,分为10个页显示,1页有25个电影 import urllib.request from bs4 imp ...

最新文章

  1. OpenBSD 5.2 发布
  2. 汇编 无条件转移和过程调用指令
  3. 「权威发布」2019年大学生电子设计竞赛题目
  4. 重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider...
  5. 【直观理解】一文搞懂RNN(循环神经网络)基础篇
  6. linux tcp压测工具,02.监控和压测工具 - 2.4.压测工具 - 《Linux性能调优指南》 - 书栈网 · BookStack...
  7. APUE习题[实现dup2函数功能,不使用fcntl]
  8. JMeter压力测试步骤
  9. 【在大学的快乐生活】锐捷校园网无感认证通过路由器mac地址克隆实现一账号多终端
  10. linux 下录音软件,linux下录音软件Audacity[zt]
  11. SIF协议(一线通)
  12. python_业余学习_分词工具jieba 正则表达式清洗微博文本特殊符号 最大匹配算法
  13. 使用mysql打开什么文件格式_dbf是什么文件怎么打开
  14. 苹果手机白屏_为什么安卓用久了会卡顿,苹果用久了会闪退?看完长知识了
  15. 作为一位软件测试工程师,应当需要哪些能力?
  16. Numpy:repeat用法图解
  17. lvm - Logical Volume Manager - 逻辑卷管理
  18. 2021宜宾叙州区二中高考成绩查询,宜宾叙州第二中学2021年排名
  19. Activiti工作流使用之SpringBoot整合Activiti
  20. 【MES系统】这个表格让您秒懂MES制造执行系统与ERP企业管理系统的区别及联系

热门文章

  1. 照片审核处理工具_2020中级会计考试报名今天开始,照片上传要求相关说明
  2. mysql连接工具_连接MySQL常用工具
  3. 车联网及其技术发展趋势
  4. lingo入门教程之一 初识lingo
  5. 杨辉三角形Python实现
  6. 【MapGIS】常见问题处理
  7. fh 幅频特性曲线怎么画fl_北京消防,关于消防图,你怎么看?
  8. 计算机黑屏闪光标,电脑开机黑屏只有光标在闪的解决方法
  9. 小波与小波包、小波包分解与信号重构、小波包能量特征提取
  10. 数据结构:堆栈的区别