python第一站
python 第一站,豆瓣-美国末日评论小爬虫
最近学习python,但是光是看书看视频学习,总是觉得掌握的不够扎实。所以就决定自己去写写爬虫,当带着目的性去学,也许更容易发现自己需要什么。这是酝酿多日之后的第一个作品,简单的不能再简单的一个小爬虫。
使用工具:
- python3 (windows环境)
- re , urllib , urllib2 , json(这几个是python基本库中的,虽然json好像没用到— —!)
- BeautifulSoup4(非python基本库,需要自己安装)
思路:
首先,使用urllib将url解析成html文本,然后用BeautifulSoup将html文本解析成BeautifulSoup类型的对象,然后去查看对应元素的值以及文本,通过python去分析这些数据,最后给出结果。
代码:
# -*- coding: utf-8 -*-
import urllib , json , string , re
from urllib import request
from bs4 import BeautifulSoup as BS
def UrlToHtml(url):
a = urllib.request.urlopen(url)
b = a.readlines()
for i in range(0,len(b)):
b[i] = b[i].decode('utf-8')
b = ''.join(b)
return b
def ToUrl(Page):
Nums = int(Page)*20
url = 'https://www.douban.com/game/25889245/comments?start='+str(Nums)+'&sort=score'
return url
page = 0
while True:
Url = ToUrl(page)
Html = UrlToHtml(Url)
soup = BS(Html,'html.parser')
list_a = []
list_b = []
for Li in soup.findAll('li',class_='comment-item'):
list_a.append(Li)
for Li in list_a:
star_f = Li.find(name = 'span', attrs = { 'class' : re.compile(r'allstar..')})
if star_f == None:
list_b.append('未打分')
else:
list_b.append(dict(star_f.attrs)['title'])
for i in range(0,len(list_b)):
if list_b[i] == str('未打分'):
print('第{}页第{}楼,没有打分'.format(page+1,i+1))
elif list_b[i] == str('推荐'):
print('第{}页第{}楼,没有给5星评价'.format(page+1,i+1))
page+=1
if len(list_a) < 2 :
break
知识点:
- from urllib import request , urllib.request.urlopen(url) , 将url解析成html文本 , 但是解析后类型为bytes,中文显示乱码 , 所以用html.decode('utf-8')将它的类型转化成str
- soup = BeautifulSoup(Html,'html.parser')将html文本转化成BeautifulSoup对象
- 使用soup.find 和 soup.findAll 以及正则表达式获取需要的数据
python第一站的更多相关文章
- 小白学习django第一站-环境配置
Django简单来说就是用Python开发的一个免费开源的Web框架 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 开搞!!! 工具准备: linux(ubuntu) + py ...
- CSDN高校俱乐部2013年秋季北京地区第一站“编程语言的应用及其发展”—北京联合大学
2013年12月11日晚17:00.CSDN高校俱乐2013年秋季北京地区第一站“编程语言的应用及其发展”在北京联合大学进行. 首先,CSDN总部人员介绍CSDN俱乐部的改版以及线上编程挑战赛.CSD ...
- Python第一天 安装 shell 文件
Python第一天 安装 shell 文件 python里面一切都是对象 object 代码缩进:建议用四个空格来缩进,不要用tab键 安装 Linux自带python,windows需要下载m ...
- Python第一天——入门Python(1)数据定义
数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...
- Python 第一课笔记
1.Hello World程序的两种方法 在windows下执行 1.编辑器里输入,不用编译 print("Hello World!") 直接就可以运行 2.可以 ...
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- Python第一行代码
Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...
- python第一周总结
这一周将开启学习python第一周,开始之前学过python但是没有学精,到现在基本快忘记了,只能记住大概什么样子了emmm 作业计算bmi 这周作业为计算bmi,小明身高1.75,体重80.5.请根 ...
- YOU种你来丨i春秋校园行第一站北京电子科技学院
发通告啦 i春秋互联网安全校园行即将火爆开启,第一站我们将来到北京电子科技学院.对网络安全感兴趣的大学生们注意啦,我们将走进校园送福利,Are you ready? i春秋简介 i春秋拥有全国最大的网 ...
随机推荐
- sql server中将一个字段根据某个字符拆分成多个字段显示
sql server 数据库中某张表(Person)的数据信息是: ID Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址信息显示形式改 ...
- js小游戏---智力游戏
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- Java数组技巧攻略
Java数组技巧攻略 0. 声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...
- Jquery AJAX ASP.NET IIS 跨域 超简单解决办法
第一种: 在IIS添加如下标头即可 Access-Control-Allow-Headers:Content-Type, api_key, AuthorizationAccess-Control-Al ...
- Xamarin设备相关图片尺寸要求
Xamarin设备相关图片尺寸要求 Xamarin跨平台开发,要兼顾iOS.Android.尤其是图片方面,各个平台有对应的不同要求.在iOS中,需要提供没有后缀(设备无关单位尺寸).@2x(双倍 ...
- 借鉴dubbo实现自定义缓存
自定义缓存一般基于ConcurrentMap实现,实现缓存需要注意的点是缓存容器对象 本身依赖于 static final去存储对象,样例: ConcurrentMap<String, Gene ...
- Java 根据两个经纬度坐标计算距离
public class Distance{ private static final double EARTH_RADIUS = 6378137; private static double ...
- lucene全文检索---打酱油的日子
检索内容,一般的程序员第一时间想到的是sql的like来做模糊查询,其实这样的搜索是比较耗时的.已经有lucene帮我们 封装好了,lucene采用的是分词检索等策略. 1.lucene中的类描述 I ...
- HDU5288 OO’s Sequence
Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...
- PHPExcel——读取excel
在网上找了excel读取的一些资料,个人觉得PHPExcel这还是挺好用的,相对比较全的工具. 主要功能是读取上传的excel文件,插入或更新到数据库. iconv("gbk",& ...