一个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
程序诞生的那些事儿 先聊聊背景资料档案.. 大约两年前,我只身前往岛国赚点外快.在那边的派遣制度工作中,存在一个大约叫每月的标准工作时间的概念,按照自家公司跟派遣目标公司(业界称为现场)的合同,规定了 ...
随机推荐
- flask-bootstrap学习笔记
flask-bootstrap 是flask一个方便扩展使用bootstrap前台的扩展. 使用方法: 安装: pip instal flask-bootstrap4 加载: from flask_b ...
- JS案例六_2:省市级联动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- python笔记18-高阶函数
高阶函数: 如果一个函数的入参是一个函数名的话,那这个函数就是一个高阶函数 函数即变量 # def hello(name):# print(name)# new_hello = hello#hello ...
- Thread线程join方法自我理解
Thread线程join方法自我理解 thread.join():等待thread线程运行终止,指的是main-thread(main线程)必须等待thread线程运行结束,才能继续thread.jo ...
- lvs用户空间命令ipvsadm
ipvs工作在内核空间,而ipvsadm工作在用户空间,是负责管理集群服务编写规则的命令行工具 ipvsadm需要手动安装. $ yum -y install ipvsadm ipvsadm管理命令 ...
- ajax 提交form格式 和 json格式
json 格式 内容在body中 ajax设置 Content-Type: application/json 浏览器查看为 Request Payload The Request Payload ...
- linux之时间设置
date 显示与设置系统时间 %Y year %m moth 月 %d day 日期 %H hour 小时 %M minute 分钟 %S sec 秒 +%F ...
- Wisdom RESTClient 使用教程
Wisdom RESTClient 一款自动化测试REST API的工具,它可以自动化测试RESTful API并生成精美的测试报告,同时基于测试过的历史API,可以生成精美的RESTful API文 ...
- npm run dev的错误
一直出现这个问题,有试过重新npm安装之类的,也试过替换文件,后来才知道原来是我在初始目录下执行run,应该cd到该项目下在run,如图 firsttest是我的项目名字
- 3--Postman--变量(environment&global)
(1) Environment clear an environment variable: pm.environment.unset("variable_key")--recom ...