定向爬取网页内容

该程序使用request模块来对网页的请求访问,然后获取其网页的内容,再通过re模块下的正则表达式来筛选出所要的数据。代码简单,大牛路过别喷......

首先,想要获取网页中想要的数据,就要分析网页的结构和网页内容中数据在哪个html标签中,然后分析其间的关系。如下图:

在这里仅仅只是介绍获取上面的学号、姓名、年级和专业相对应的值。由图可以知道,所有的值都是放在一个div中,并且存放值的div的设置都是一样的,而且网页中

其他的值不是以这样的形式存放,这样就可以将其内容单独取出来了。网页的内容由网址后面的id值决定,每个id值都会对应着每个人的信息,这也算是一个小小的bug吧,

通过改变id值来获取不同的页面,进而获取到每个人的信息,比如:网址为:http://xxxx.xxx.com/test/id=15525,该ID值是对应上面的信息,而且通过测试知道该id

值是连续的,而不是随机的,所以这提供猜解每个人的方法,就是将id值累加就可以将所有人的相应的信息都穷举出来。通过上面的分析,就可以将想要的数据筛选出来了。

接下来就可以着手编写相应的正则表达式来获取相应的数据,你可以在站长工具上找到相应的正则表达式编写的工具来测试,将该div下的内容粘贴过去作为查找的内容,

然后测试你的正则表达式是否编写正确,看看是否可以获取到相应字段的值。编写的正则表达式为:‘<div align="left">([^<span]\s*.*\s*.*)</div>‘,能获取到相应的

数据,那么就可以开始整个程序的代码实现了。注意:在获取相应的数据前,应该知道网页的编码,不然可能会导致抓取下来的网页内容出现乱码现象。

首先就是导入相应的处理模块和一些变量的初始化:

#   -*-   coding:utf-8   -*-import requests
import re

Host = ‘‘    # 猜解的网址
# id value
stuID = 15525

# 将结果写进文件里面
path = ‘H:\\python‘    # 保存结果的目录
nStop = 0   # 终止猜解的标志
kShow = 0   # 简单的计数

然后就是请求网页和处理网页的内容,来获取自己想要的数据:

try:
    while True:

        f = open(path + ‘id.docx‘,‘a‘)
        stuID += 1
        host = Host + str(stuID)
        tmpValue = ‘‘   # 用于保存所有的值
        content = requests.get(host).content   # 获取网页内容
        value = re.findall(‘<div align="left">([^<span]\s*.*\s*.*)</div>‘,content)   # \s 匹配任意空白字符
        testValue = value[0].strip()   # 判断value列表的第一个值是否为空,是则退出循环
        if testValue == ‘‘:
            nStop += 1  # 用于计算,如果出现连续100个人都没有信息,才退出循环
            # 这样导致有一些同学退学的,相应的ID没有信息,导致中断了?
            if nStop == 100:
                print(‘已经拆解完 ...  ‘)
                break

        print(‘.‘),     # 简单的计数和提示
        if kShow % 50 == 0:
            print

        for v in value:
            kShow += 1
            try:
                val = unicode(v.strip())
                tmpValue += str(v.strip().encode(‘utf-8‘)) + ‘   ‘
                nStop = 0  # 这样当有信息时,将n置为0,保证了n的值当出现有值时是为0的
            except UnicodeEncodeError:
                print(‘error‘)

        f.writelines(str(stuID)+ ‘   ‘ + tmpValue + ‘\r\n‘)  # 将信息写进文件
        f.close()
except Exception,e:
    print(e)
    print(‘done ... ...‘)

上面就是整个程序的全部代码了,其中有些代码并没有任何意义,只是简单的提示功能,如:print(‘.‘),在控制台下输出一个‘.‘,表示该程序还在运行,因为该程序是将结果

直接写进一个文档中,而且没有任何的输出,如果没有提示,用户可能会误以为该程序没有正常执行或执行出现了卡死状态,这样还有一个就是可以简单的进行猜解的数量,

因为下面设置了每50个id就换行,所以还是可以初略的判断猜解的数量的,当然,你还可以在输出的前面添加序号,这样就方便计数,更可以将其使用累加方式将其计算出来。

从该例子看,这样未授权就可以访问到相应网页内容的并不少见,由于开发人员的安全意识不够,这样必会导致我们数据的泄露,就该网站来说,应该将该ID值加密,最好是

使用现有的加密方法及加上自己一些标识符混淆,而不是将其以明文方式显示出来。

时间: 2024-11-06 15:29:05

定向爬取网页内容的相关文章

[python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:        1.可以了解Python简单爬取图片的一些思路和方法        2.学习Selenium自动.测试分析动态网页和正则表达式的区别和共同点        3.了解作者最近学习得比较多的搜索引擎和知识图谱的整体框架        4.同时作者最近找工作,里面的一些杂谈和建议也许对即将成为应届生的你有所帮助        5.当然,最重要的是你也可以尝

[python爬虫] Selenium定向爬取PubMed生物医学摘要信息

本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容.        PubMed是一个免费的搜寻引擎,提供生物医学方面的论文搜寻以及摘要.它的数据库来源为MEDLINE(生物医学数据库),其核心主题为医学,但亦包括其他与医学相关的领域,像是护理学或者其他健康学科.它同时也提供对于相关生物医学资讯上相当全面的支援,像是生化学与细胞生物学.        PubMed是因特网上使用最广泛的免费MEDLINE,该搜寻引

java爬虫爬取网页内容前,对网页内容的编码格式进行判断的方式

近日在做爬虫功能,爬取网页内容,然后对内容进行语义分析,最后对网页打标签,从而判断访问该网页的用户的属性. 在爬取内容时,遇到乱码问题.故需对网页内容编码格式做判断,方式大体分为三种:一.从header标签中获取Content-Type=#Charset:二.从meta标签中获取Content-Type=#Charset:三.根据页面内容分析编码格式. 其中一/二方式并不能准确指示该页面的具体编码方式,周全考虑,加入第三种方式. 第三种方式引入开源jar包info.monitorenter.cp

java爬取网页内容 简单例子(2)——附jsoup的select用法详解

http://www.cnblogs.com/xiaoMzjm/p/3899366.html [背景] 在上一篇博文java爬取网页内容 简单例子(1)——使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则表达式 对于没有很好正则表达式基础的人——比如说我T_T——是一件蛮困难的事.这一篇,我们改用jsoup,一个强大的解析html工具,去解析html,你会发现,一切都变得很容易. [准备工作] 下载:jsou

爬虫的定向爬取与垂直搜索

转 爬虫的定向爬取与垂直搜索 定向爬虫是网络爬虫的一种. 定向爬虫 定向爬虫可以精准的获取目标站点信息. 定向爬虫获取信息,配上手工或者自动的模版进行信息匹配,将信息进行格式化分析存储. 优势: 基于模版的信息提取技术,能提供更加精准的信息.比如价格,房屋面积,时间,职位,公司名等等. 劣势: 目标网站难以大面积覆盖,因为基于模版匹配的信息提取技术,需要人工的参与配置模版,欲要大面积覆盖各个目标网站,需要大量的人力成本,同样维护模板也需要很大的人力成本. 也就是说定向爬取就是我们要针对不同的网页

爬虫10-股票信息定向爬取

股票信息定向爬取 功能描述: 目标 获取上交所和深交所所有股票的名称和交易信息 输出 保存在文件中 技术路线 requests bs4 re 候选爬取网站: 新浪股票 http://finance.sina.com.cn/stock/ 百度股票 https://gupiao.baidu.com/stock/ 网站选取: 原则 股票信息静态存在于HTML页面中,非js代码生成,没有robots协议限制 方法 浏览器F12,源代码查看等 不要纠结于某个网站,多找信息源尝试 (在视频里老师表示新浪股票

【实例】--股票数据定向爬取

从股票列表网页获取股票代码 根据股票代码去股票详情页面获取股票详细信息 1. 股票列表页面 凤凰网财经—股票信息 http://app.finance.ifeng.com/list/stock.php?t=ha&f=chg_pct&o=desc&p=1 2. 股票详细信息 老虎社区—股票详情 https://www.laohu8.com/stock/600210 股票数据定向爬取思路 1. 查看网站robots协议,查看网站是否可以爬取 2. 查看网页源代码,查看网页信息是否可以直

Python爬虫——定向爬取“中国大学排名网”

内容整理自中国大学MOOC——北京理工大学-蒿天-Python网络爬虫与信息提取 相关实战章节 我们预爬取的url如下 http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html 网页节选 在浏览器中读取网页源代码 可以 发现表格数据信息是直接写入HTML页面信息中,所以我们可以直接采取定向爬虫操作. 我们的整体设计思路如下: 1.从网络上获取大学排名网络内容 2.提取网页内容中信息到合适的数据结构 3.利用数据结构展示并输出结果 仔细观察可以发现

[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员还是写个程序来进行吧!        所以我通过Python+Selenium+正则表达式+urllib2进行海量图片爬取.        前面讲过太多Python爬虫相关的文章了,如爬取新浪博客.维基百科Infobox.百度百科.游迅网图片,也包括Selenium安装过程等等,详见我的两个专栏: