python 爬取简单静态网站之电影天堂
大家好。今天我在这里与大家分享一下简单的网页抓取。
一、准备工作:下载并安装好python3.x,并且配置好环境变量。
二、 检查安装的软件是否可用:在cmd窗口下分别输入python -V 命令 与 pip -V命令(注意大小写)若出现版本信息即表示安装成功。然后用管理员身份打开cmd窗口,输入指令:pip install requests , 下载模块成功后即可开始打代码。
三、常识介绍:
1、URL:统一资源定位符,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL。你可以理解为文件在网络上的存储地址,可以通过URL去访问网络上的资源。
2、requests库:通常使用requests中的get函数进行网页访问。其中requests中有7个可使用的方法,分别是request、get、head、post、put、patch、delete。但是,事实上,由于网络安全的限制,我们很难有机会去使用后面4个方法,而request又是基本方法,也就是说,对于爬虫来说,我们一般都是使用get方法,而对于一些特别大的url链接,我们使用head方法来获得头部信息即资源概要。
3、爬取网页的通用代码框架:用requests.get方法可以获取网页的信息。但是,这不是一定会成功的,因为网络连接有风险,异常处理很重要。所以我们用到一个爬取网页的通用代码框架来保证网络连接的异常能得到处理
try:r = requests.get(url, timeout=30)r.raise_for_status()return r.text
except:return "产生异常"
response的raise_for_status:若获得的相应为非200响应,我们可以通过 r.raise_for_status() 来抛出异常
四、robots协议:大部分网站会有这个协议,而爬虫理应遵守这个协议。查看方式为在网站后面添加代码/robots.txt即可,协议中可以有多条内容,但每一条都包含两项信息,以百度为例
Disallow: /link? Disallow: /home/news/data/User-agent: * Disallow: /
User-agent(用户代理):表示爬虫的名称,Disallow(不允许):表示爬取的排除规则
第一条规则表示:名字符合正则表达式(link?)命名规则的爬虫不能爬取目录/home/news/data/下的文件
第二条规则表示:名字符合正则表达式(*)命名规则的爬虫(即所有爬虫)都不能爬取根目录下的信息
五、代码实现
import re,requests
for n in range(1,80):url = "http://www.ygdy8.net/html/gndy/china/list_4_"+str(n)+".html" #观察网页换页规则,发现修改其中一项数字即可换页html = requests.get(url) #用get函数对url进行访问请求# html.raise_for_status() 调用变量html作为response对象的raise_for_status方法,若响应值为200则表示请求访问成功html.encoding = html.apparent_encoding #encoding是直接获取网页头部声明的编码方式,apparent_encoding为网页实际编码格式# print(html.text)# print(html.status_code) if shuchu 200 qingqiuwuwuhtml_list = re.findall('<a href="(.*?)" class="ulink">',html.text) #用正则表达式,匹配并提取符合规则的信息# print(html_list)print("%d\n"%(n))for a in html_list:# html_list[a] ="http://www.ygdy8.net" + html_list[a]#[:25] + str(eval(html_list[a][25:30])+21) + html_list[a][30:] #a = "http://www.ygdy8.net" + a +"?userid=0" #dprint(a)b = requests.get(a)b.raise_for_status()b.encoding = b.apparent_encoding# print(b.text)ftp = re.findall('><a href="(.*?)">ftp',b.text)# print(ftp)# print('\n')if ftp: #用if过滤掉提取失败的网页,替代上文提到的try except 风险处理机制,然后将获取的数据储存起来即可with open(r'E:\py\dytt.txt','a',encoding ='utf-8') as cw:cw.write(ftp[0]+'\n'+"%d"%(n))
注:代码正文中并没有加入try except异常处理机制,只在最后用if语句将可能出错的个别连接排除。大家下去练习的时候记得加异常处理机制,这很重要。
python 爬取简单静态网站之电影天堂相关推荐
- 爬取简单静态网站——汽车之家二手车
简单静态一级页面爬取 爬取汽车之家(泰州)二手车信息 爬取['名称','公里数','上牌时间','销售者','价格'] --------------开始了--------------- 1.判断是否为 ...
- python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化
python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...
- Python爬取简单网页内容
Python爬取简单网页内容 分享一下第一次学习爬虫的过程.之前一直有听说过爬虫,但是也没有接触过爬虫.在需要爬取网页信息的时候,才开始着手学习爬虫.Python爬虫有很多种方法,例如使用scrapy ...
- 教你用Python爬取表情包网站下的全部表情图片
教你用Python爬取表情包网站下的全部表情图片 又是我啦~~~ 最近上网的时候老看到有人用Python爬取表情包,心痒痒自己也整了一个. 使用到的扩展库:BeautifulSoup, request ...
- Python爬取豆瓣正在上映的电影
Python爬取豆瓣正在上映的电影 #爬取豆瓣正在上映的电影 import requests from lxml import etree #1.将目标从网站上的页面抓取下来 headers = {' ...
- 爬取某视频网站的电影
通过抓包爬取某视频网站的电影 burpsuite工具 1. 先使用抓包工具进行抓包分析,得到对应的接口 2. 直接用requests库来请求响应数据 3. 存入数据库 代码 from functool ...
- 使用Python爬取不同类别的豆瓣电影简介
使用Python爬取不同类别的豆瓣电影简介 之前做过一点文本分类的工作,从豆瓣上爬取了不同类别的数千条电影的简介. 爬取目标 我们爬取的目标是 豆瓣影视,打开豆瓣网,随便点击一部电影,即可看到电影的介 ...
- python爬取猫眼正在热映电影
用python写爬虫爬取需要的数据比较容易,以Python简洁的语法和一大波成熟的库,写起来相当的快 python的版本以及使用的库 Python 3.6.4 requests lxml 这次主要是爬 ...
- python爬取安居客网站上北京二手房数据
目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...
最新文章
- 十年磨一剑,可重构计算架构将引领未来芯片市场
- 关于生成漏洞信息属性代码备份
- centos中的mysql安装配置,Linux下安装配置MySQL
- MS12-042 用户态调度机制特权提升漏洞
- vivado实现异步复位的D触发器
- Java监听器完整入门实例
- [ESC] EnTT 学习记录 2
- Redis中的批量删除数据库中的Key
- android 监听通知栏点击事件,android使用NotificationListenerService监听通知栏消息
- 【数学建模】基于matlab无线可充电传感器网络充电路线规划【含Matlab源码 750期】
- mt4 显示服务器时间,MQL4编程学习之MT4显示任意时间周期指标的使用方法
- 接口文档生成工具ApiPost挺好用
- python编程题:天天向上的力量
- c语言案例六 速算24,参阅:C语言速算24数据结构课程设计最终版
- 使用python爬取猎聘网的职位信息
- UE5 植被系统详解
- 阿里巴巴绩效管理理念和原则
- 智慧的车联网,是否会让我们失去操控的乐趣?
- 极其简单的响应式的模块化布局、看板布局 js 工具
- 选点问题(贪心算法)
热门文章
- 你有脑回千百转,我只用一招鲜
- java线程占用的空间_linux服务器查询java线程占用的资源-Go语言中文社区
- 单元格函数:count、countA、countBlank
- 我一个回车干掉隐藏在身边已久的木马病毒
- 解决SSD+HDD双硬盘下电脑卡顿问题,CPU和内存使用率低,电脑依旧卡顿
- PHP中time(),date(),microtime()三者的区别
- wan端口未连接怎么弄_wan口未连接是什么意思?
- 全国翻译专业资格(水平) 考试
- HashSet-哈希值
- 思杰虚拟服务器退出管理主机,思杰服务器虚拟化解决详尽方案介绍2012.ppt