zoukankan      html  css  js  c++  java
  • 正则表达式(2)-应用举例

    爬取学校网站的链接

    import requests
    import re
    url = 'http://www.whut.edu.cn/'
    r = requests.get(url)
    r.encoding = 'utf-8'
    text = r.text
    links = re.findall('(http.*?)"', text,re.S)
    for each in links:
        print(each)
    

    在这里插入图片描述

    sub实现自动翻页

    爬取豆瓣Top250

    1. 根据HTML页面确定相关元素在这里插入图片描述在这里插入图片描述
      2.观察url与页面的关系
      在这里插入图片描述
    2. 利用sub进行翻页
    import requests
    import re
    from fake_useragent import UserAgent
    ua = UserAgent()
    kv = {'user-agent': ua.random}  # 构造user-agent来伪装爬虫程序
    url = 'https://movie.douban.com/top250?start=0&filter='
    for i in range(0, 10):
        sum_page = i*25
        new_url = re.sub('start=d+', 'start=%d'%sum_page, url, re.S ) ####关键代码######
        r = requests.get(new_url, headers=kv)
    

    3.完整的提取过程 在这里插入图片描述

    完整代码:

    import requests
    import re
    from fake_useragent import UserAgent
    ua = UserAgent()
    kv = {'user-agent': ua.random}
    url = 'https://movie.douban.com/top250?start=0&filter='
    for i in range(0, 10):
        sum_page = i*25
        new_url = re.sub('start=d+', 'start=%d'%sum_page, url, re.S )
        r = requests.get(new_url, headers=kv)
        r.encoding = 'utf-8'
        text = r.text
        numbers = re.findall('<em class="">(.*?)</em>', text, re.S)
        movies = re.findall('<span class="title">(.*?)</span>', text, re.S)
        for number in numbers:
            index = -1
            for movie in movies:
                index += 1
                if '&' not in movie:
                    print(f'{number}' + ':', movie)
                    movies[index] = '&'
                    break
    

    成果展示
    在这里插入图片描述

    • 中间利用了fake_useragent库来伪造header
      有关伪造user-agent
    • 采取每页处理完再爬取下一页的思路
    • 中间爬取电影名字的时候并不是很完美,采用识别关键符号 &
      因为爬取的列表实际上是这样的:
      在这里插入图片描述
      并不完全是汉字,但每个非汉字的部分都含有&符号,剔除剩下的子列就是电影的排序
  • 相关阅读:
    最小生成树与Prim算法
    图的存储——链式前向星
    *转载 Tarjan有向图详解
    图的连通性算法-Kosaraju
    最小花费8597
    PDF提取图片(错误纠正)
    字符串删除指定符号(不限位置)
    python迭代有限制,突破限制
    storm资源冲突
    storm单节点问题(转载)
  • 原文地址:https://www.cnblogs.com/l0nmar/p/12553859.html
Copyright © 2011-2022 走看看