• Forward团队-爬虫豆瓣top250项目-项目进度


    项目地址:https://github.com/xyhcq/top250

    我们的项目是爬取豆瓣top250的电影的信息,在做这个项目前,我们都没有经验,完全是从零开始,过程中也遇到了很多困难,不过我们也乐于边学边做。

    我们先分析了豆瓣top250的网页源码,发现都是html的代码,我们将我们需要的每组角标对应的信息都记录了下来,用于后续抓取。

    top250中每部电影的网页基本都是这种格式:

    1 https://movie.douban.com/top250?start=

    递归增加的,所以我们后续也用得上

    现阶段我们将程序的大体框架构建了出来,在打算进一步写的时候,我们发现,我们需要用到一些新知识:正则表达式以及beautifulsoup,然而悲剧的是,我们都不曾学过,所以组员们在最近都在学习正则表达式,幸运的是,老师最近的课上正好给我们讲了Python的正则表达式re模块的用法,解决了我们的一些问题,我们还需要学习beautifulsoup。

    我们的程序框架是这样的:

    复制代码
     1 # -*- coding:utf-8 -*-
     2 import re
     3 from bs4 import BeautifulSoup
     4 
     5 def getHtml():
     6     # 用于获取豆瓣top250网站信息
     7     pass
     8 
     9 def getData():
    10     # 解析html,存储获取到的信息
    11     # 用于分析获取到的信息
    12 
    13     #电影标题
    14     title = []
    15     #电影评论数
    16     rating_num = []
    17     range_num = []
    18     #演员
    19     actor = []
    20     data = {}
    21     pass
    22 
    23 def getInfo():
    24     # 用于处理获取到的信息,如存到列表中
    25     # 重点来了,我们不会正则表达式,但是必须用。现在正在学习!!!
    26     pass
    27 
    28 def writeMovie():
    29     # 用于将结果写入到文件中
    30     f=open("top250.txt","w")
    31     f.write("test")
    32     f.close()
    33 
    34 getHtml()
    35 getData()
    36 getInfo()
    37 writeMovie()
    复制代码

    很简陋,基本上什么功能都没有实现,连写入文件都是现复习的。

    运行后当然什么结果也不会显示。

     

    运行后除了能实现写入文件暂时没有什么实质功能。

    然后我们学习了正则表达式:

    .

    代表任意字符

    逻辑“或”操作

    []

    匹配内部的任一字符或子表达式

    [^]

    对字符集和取非

    -

    定义一个区间

    对下一字符取非(普通变特殊,特殊变普通)

    *

    匹配前面的字符或子表达式0次或多次

    *?

    惰性匹配上一个

    +

    匹配前一个字符或子表达式1次或多次

    +?

    惰性匹配上一个

    ?

    匹配前一个字符或子串表达式0次或1次重复

    {n}

    匹配前一个字符或子表达式

    {m,n}

    匹配前一个字符或子表达式至少m次至多n次

    {n,}

    匹配前一个字符或子表达式至少n次

    {n,}?

    前一个的惰性匹配

    ^

    匹配字符串的开头

    A

    匹配字符串的开头

    $

    匹配字符串的结尾

    []

    退格字符

    c

    匹配一个控制字符

    d

    匹配任意数字

    D

    匹配数字以外的字符

    匹配制表符

    w

    匹配任意数字、字母、下划线

    W

    不匹配数字、字母、下划线

     

     

    [0-9]

    0123456789任意之一

    [a-z]

    小写字母任意之一

    [A-Z]

    大写字母任意之一

    d

    等同于[0-9]

    D

    等同于[^0-9],匹配非数字

    w

    等同于[a-z0-9A-Z_]

    W

    等同于[^a-z0-9A-Z_]

    导入re

    import re

    re.match(patter,string,flags=0)

    patter:匹配的正则表达式

    string:要匹配的字符串

    flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写;多行匹配等等。

  • 相关阅读:
    UI自动化实现多浏览器运行
    【转】C#操作XML方法集合
    日拱一卒
    敏捷开发- planning会议中的开会趣事
    敏捷开发- 可行走的骨骼
    敏捷开发- 测试人员何去何从
    Nunit & Specflow
    [转]根本原因分析(Root Cause Analysis)
    Selenium 中抓取dropdown
    网页模板
  • 原文地址:https://www.cnblogs.com/ngy12138/p/7663247.html
Copyright © 2020-2023  润新知