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春秋拥有全国最大的网 ...
随机推荐
- 前端 js 实现简单 表单提交
1. 登录页 验证用户身份,登录成功之后等待一定秒数,跳转到操作页面 <html> <head> <title>Login.html</title> & ...
- mysql状态取反(0变1,1变0)
如果要改变status状态 update table_name status=ABS(status-1); //取绝对值 则0-->1 1-->0
- PHP探针
来自LNMP.org 探针p.php 代码: <?php error_reporting(0); //抑制所有错误信息 @header("content-Type: text/html ...
- Python yield 使用浅析
转载来自: http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 初学 Python 的开发者经常会发现很多 Pyth ...
- MyBatis学习(二)
mybatis开发dao的方法 作用范围 SqlSessionFactoryBuilder是以工具类方式来使用,需要创建sqlSessionFactory就new一个SqlSessionFactory ...
- Linux下安裝Oracle database內核參數設置
參考:1529864.1 ************************************************** RAM ...
- UWP 解决Webview在Pivot里面无法左右滑动的问题
//为了解决webview在PivotItem里面,阻止pivot左右滑动. if (webView != null) { rootGrid.Children.Remove(webView); web ...
- hdu 5071(2014鞍山现场赛B题,大模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...
- [spring源码学习]五-BeanPostProcessor的使用
一.接口描述 spring提供了一个接口类-BeanPostProcessor,我们叫他:bean的加工器,应该是在bean的实例化过程中对bean做一些包装处理,里边提供两个方法 public in ...
- jmeter仅一次控制器
仅针对 1个线程的 多线程的那个不生效 想实现多次执行某个请求只执行一次 需要设置为单线程 循环次数设置为多次就可以了