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第一站的更多相关文章

  1. 小白学习django第一站-环境配置

    Django简单来说就是用Python开发的一个免费开源的Web框架 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 开搞!!! 工具准备: linux(ubuntu) + py ...

  2. CSDN高校俱乐部2013年秋季北京地区第一站“编程语言的应用及其发展”—北京联合大学

    2013年12月11日晚17:00.CSDN高校俱乐2013年秋季北京地区第一站“编程语言的应用及其发展”在北京联合大学进行. 首先,CSDN总部人员介绍CSDN俱乐部的改版以及线上编程挑战赛.CSD ...

  3. Python第一天 安装 shell 文件

    Python第一天  安装  shell  文件 python里面一切都是对象 object 代码缩进:建议用四个空格来缩进,不要用tab键 安装 Linux自带python,windows需要下载m ...

  4. Python第一天——入门Python(1)数据定义

    数据类型: 什么是数据? 在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母.符号和模拟量等的统称.现在计算机存储和处 ...

  5. Python 第一课笔记

    1.Hello World程序的两种方法     在windows下执行 1.编辑器里输入,不用编译 print("Hello World!") 直接就可以运行      2.可以 ...

  6. 简学Python第一章__进入PY的世界

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  7. Python第一行代码

    Python版本:Python 3.6.1 0x01 命令行交互 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计 ...

  8. python第一周总结

    这一周将开启学习python第一周,开始之前学过python但是没有学精,到现在基本快忘记了,只能记住大概什么样子了emmm 作业计算bmi 这周作业为计算bmi,小明身高1.75,体重80.5.请根 ...

  9. YOU种你来丨i春秋校园行第一站北京电子科技学院

    发通告啦 i春秋互联网安全校园行即将火爆开启,第一站我们将来到北京电子科技学院.对网络安全感兴趣的大学生们注意啦,我们将走进校园送福利,Are you ready? i春秋简介 i春秋拥有全国最大的网 ...

随机推荐

  1. C#动态创建和动态使用程序集、类、方法、字段等

    C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204)  (3)   首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...

  2. 这交互炸了:饿了么是怎么让Image变成详情页的

    这交互炸了:饿了么是怎么让Image变成详情页的 晚上叫外卖,打开饿了么,发现推了一个版本,更新以后,点开了个鸡腿,哇,交互炫炸了. 本文同步自wing的地方酒馆 不过还是有槽点.我是无意中才发现可以 ...

  3. python:列表与元组

    1.python包含六种内建的序列,列表和元组是其中的两种,列表可以修改,元组则不能 2.通用序列操作 2.1 索引:和C#的区别是索引可以为负数,最后一个元素索引为-1,索引超出范围会报错 例:&g ...

  4. mysql插入速度

    请参考 http://www.3lian.com/edu/2013/07-15/80916.html 分表查询   select * from (   select * from user0   un ...

  5. oracle 11g RAC安装节点二执行结果错误CRS-5005: IP Address: 192.168.1.24 is already in use in the network

    [root@testdb11b ~]# /u01/app/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oraInvento ...

  6. Marshal的简单使用

    终于从北京回上海了,第一次听unity开发者大会,感觉讲的都是一些Unity 5新功能的介绍,其实主要还是要靠自己去摸索那些新的功能,主要就是添加了新的GUI系统,貌似集成了NGUI到Unity中,取 ...

  7. Matlab的部分文件操作

    Author:Maddock Date:2015-01-20 判断文件是否存在 infilename = [str,'\lena.jpg']; sgc_exist = exist(infilename ...

  8. Gym100947E || codeforces 559c 组合数取模

    E - Qwerty78 Trip Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  9. PE530 : GCD of Divisors

    \[\begin{eqnarray*}ans&=&\sum_{i=1}^nf(i)\\&=&\sum_{i=1}^n\sum_{d|i}\gcd(d,\frac{i}{ ...

  10. BZOJ 2303: [Apio2011]方格染色 题解

    题目大意: 有n*m的方格,中间的数要么是1,要么是0,要求任意2*2的方格中的数异或和为1.已知一部分格子中的数,求合法的填数的方案数. 思路: 由题意得:a[i][j]^a[i][j+1]^a[i ...