一个python小爬虫
自定义获取豆瓣网电影TOP250里的排名数量
主要思路:先由requests库获取html基本信息,然后用BeautifulSoup来进行html.parser格式解析,逐个获取Tag属性,并且对内容进行字符串切片,字符串匹配,保存得到电影名称,地点,日期。
- from bs4 import BeautifulSoup
- import requests
- import re
- #由于中文编码的原因需要重新计算中文所占长度
- def SuperLen(s):
- sum_len=len(s)
- chi_len=len(re.sub('[a-zA-Z]','',s))
- eng_len=sum_len-chi_len
- return (chi_len*2+eng_len)
- #此函数功能是准确得到中英文混合字符串所占长度
- #由于每页只有25个电影,所以用户需求电影数目不同页数(URL)也就不同
- def Get_Page(n):
- if n%25!=0:
- num=int(n/25)+1
- else:
- num=int(n/25)
- return num
- #此函数功能是获取页数
- #根据所需参数页数来对应不同的URL
- def Num_Get_Soup(n):
- url='https://movie.douban.com/top250?start='+str(n)+'&filter='
- resul=requests.get(url)
- soup=BeautifulSoup(resul.text,'html.parser')
- return soup
- #此函数功能就是对URL进行requests.get 以获取对应的BeautifulSoup
- #使用BeautifulSoup
- def Get_Name_Date_Locat(nums):
- NAME=[]
- Date=[]
- Locat=[]
- for j in range(Get_Page(nums)): #获取页数,进行循环操作
- soup=Num_Get_Soup(j*25) #根据不同页数的不同URL获取soup
- Name_temp=soup.find_all('img','',limit=25) #获取名称Tag,数目最大且为25
- Date_Locat_temp=soup.find_all('p','',limit=25)#获取日期 地点Tag
- for i in Name_temp:
- NAME.append(i.attrs['alt']) #对获取的Tag获取属性
- for l in Date_Locat_temp:
- stemp=str(l)
- Date.append(re.sub('\D','',stemp.split('\xa0')[-5])[:4]) #对字符串切片后进行字符串匹配获取数字日期
- Locat.append(stemp.split('\xa0')[-3]) #字符串切片获取地点
- return (NAME,Date,Locat)
- #此函数功能是格式化写入文件
- def Write_text(n,N,D,L):
- f=open('result.txt','w')
- for i in range(n):
- f.write(N[i]+'{}\t'.format((35-SuperLen(N[i]))*' '))
- f.write(L[i]+'{}\t'.format((70-len(L[i]*2))*' '))
- f.write(D[i])
- f.write('\n')
- f.close()
- #函数的开始
- def Start():
- nums=eval(input('请输入要爬取排名的个数0-250均可'))
- print('Please Waitng........')
- Name,Date,Locat=Get_Name_Date_Locat(nums)
- Write_text(nums,Name,Date,Locat)
- print('Complete!')
- Start()
效果图:
可改进思路:正则表达和字符串切片的使用可以再合理一些,格式化保存文件也可以再简化。
一个python小爬虫的更多相关文章
- 第一个Python小爬虫
这个爬虫是参考http://python.jobbole.com/81353/这篇文章写的 这篇文章可能年代过于久远,所以有些代码会报错,然后我自己稍微修改了一下,增加了一个getContentAll ...
- 用Python 3写的一个Spider小爬虫(使用内置urllib模块and正则表达式)
用Python写了一个Spider小爬虫,爬一爬斗鱼“王者荣耀”在线直播的主播及人气
- Day1:第一个python小程序
Day1:第一个python小程序与开发工具Pycharm 一.Hello World C:\Users\wenxh>python Python 3.6.2 (v3.6.2:5fd33b5, J ...
- 第一个python小脚本
第一个python小实验 前言 作为一个工作1年的linux运维搬砖师来说,发现没点开发能力真的是不好混啊.于是下定决心学习python! 直接上刚写的语句(大神莫鄙视) 通过控制台输入一个账号密码, ...
- 【现学现卖】python小爬虫
1.给小表弟汇总一个院校列表,想来想去可以写一个小爬虫爬下来方便些,所以就看了看怎么用python写,到了基本能用的程度,没有什么特别的技巧,大多都是百度搜的,遇事不决问百度啦 2.基本流程就是: 用 ...
- python小爬虫练手
一个人无聊,写了个小爬虫爬取不可描述图片.... 代码太短,就暂时先往这里贴一下做备份吧. 注:这是很严肃的技术研究,当然爬下来的图片我会带着批判性的眼光审查一遍的.... :) #! /usr/ ...
- Python 小爬虫流程总结
接触Python3一个月了,在此分享一下知识点,也算是温故而知新了. 接触python之前是做前端的.一直希望接触面能深一点.因工作需求开始学python,几乎做的都是爬虫..第一个demo就是爬取X ...
- Python小爬虫-自动下载三亿文库文档
新手学python,写了一个抓取网页后自动下载文档的脚本,和大家分享. 首先我们打开三亿文库下载栏目的网址,比如专业资料(IT/计算机/互联网)http://3y.uu456.com/bl-197?o ...
- 发布一个Python小程序:ManHourCalendar
程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...
随机推荐
- Windows 2008 安装Sql server 2005
Windows 2008 安装Sql server 2005 进入下载的文件中,双击打开:splash.hta 文件进行安装 根据自己的系统来选择性进行安装,这里我们选择第二项:基于 x64 的操作系 ...
- Python爬虫入门之Cookie的使用
本节我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要 ...
- 请解释ASP.NET 中的web 页面与其隐藏类之间的关系?
一个ASP.NET 页面一般都对应一个隐藏类,一般都在ASP.NET 页面的声明中指定了隐藏类例如一个页面 Tst1.aspx 的页面声明如下 <%@ Page language="c ...
- EM算法(期望最大化算法)
适用场景:存在为未测变量的情况下,对模型参数进行估计. EM算法: input:观测数据Y,为观测数据Z,联合分布P(Y,Z|θ),条件分布P(Z|Y,θ) output:模型参数θ 步骤: (1)选 ...
- Spine用于Timeline(NullReferenceException: Object reference not set to an instance of an object pine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI ())
报错信息:Spine.Unity.Editor.AnimationReferenceAssetEditor.OnInspectorGUI () (at Assets/Extention/Spine/E ...
- 使用Pretues仿真Arduino驱动步进电机
这几天想做一个给金鱼自动喂食的装置,所以学习了下如何操控步进电机,现在做个记录. 使用Pretues仿真Arduino的话,可以参考:http://www.geek-workshop.com/thre ...
- python写mapReduce初步
最近在学了python了,从mapReduce开始 ,话不多说了,直接上代码了哈 map阶段,map.py文件 import sys # 标准输入 # 在终端的话,就需要这样了 cat a.txt | ...
- Arm11-mini6410入坑
Mini6410 学习Stm32的时候原子哥的资料真全啊,而且原子哥在他论坛也解答问题.然而现在学习ARM买了一套友善之臂的开发板,官方的资料只能刚好入门而已,其实入门都算不上.看了一下,网上的资料很 ...
- 实现鼠标悬停,div勾画div边框的动画
鼠标悬浮,边框div边框的动画样式,效果图如下: 首先定义div及其样式: <style> .show { width:300px; height:200px; border:1px so ...
- html css+div+jquery实现图片轮播
一直想自己动手做一个图片轮播的控件,查查网上的资料大多引用已经做好的组件,其原理算法不是很清楚,于是自己用jquery写了一个.先看下效果图: 主要界面实现思路如下: 1.新建一个div宽度为100% ...