一个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
程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...
随机推荐
- python全栈考题 3.30
1.执行Python 脚本的两种方式 1.>>python ../pyhton.py 2. >>python.py #必须在首行有 #!/usr/bin/env ...
- crt证书iis 中引用 程序目录提示 System.UnauthorizedAccessException:拒绝访问
在站点根目录添加 Authenticated Users 权限
- java基础2(二)
Servlet 注意: servletConfig可以获取配置文件(xml文件)中配置的servlet对象的初始化参数. url-pattern 缺省servlet 注意:tomcat目录下有一个默认 ...
- react系列笔记:第一记-redux
前言: 目前公司使用dva,对于前不久还是使用原生js的我来说,花了差不多一两周时间,基本掌握如何使用.虽然对于react有一点点基础,但很多地方未深入,很多概念也很模糊,故从本文开始,记录一下系统的 ...
- getString与optString的区别
JSONObject.getString("key"):当对象中没有key属性的时候,会抛出No value for "key"的异常: public Stri ...
- JAVA第2课
JAVA 第二课 Eclipse 在加载JAVA环境出错的时候处理办法: 项目-属性-Java build path-add library -JRE system library-OK ...
- 阶段01Java基础day25网络编程
26.01_网络编程(网络编程概述) A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源 ...
- hibernate 保存的flush怎么用?
hibernate 中的flush方法只有在上面的数据保存用了hibernate的方法保存了,但是在同一个事物当中需要用SQL的方法去查上面保存的数据,这个时候上方的hibernate保存后面就需要用 ...
- Windows创建Sciter的第一个程序.HelloWorld
介绍什么的就免了.直接进入正题 平台: Windows 10 IDE : Visual studio 2017 首先从官网下载最新的SDK,https://sciter.com/download/ 创 ...
- 基于.NET平台常用的框架整理<转载>
转载来自:http://www.cnblogs.com/hgmyz/p/5313983.html 基于.NET平台常用的框架整理 自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大 ...