#练习1:获取搜狐网页上所有的URL并且把与篮球有关的内容筛选出来
#算法:
#、获取搜狐网站所有内容
#、判断哪些是链接,获取URL格式有效的链接
#、获取每个有效URL网页的内容
#、判断内容是否包含篮球
#、如果包含篮球,保存网页 import requests
import re
import bs4 resq = requests.get("http://www.sohu.com")#请求搜狐网站
print resq.text[:]#打印响应结果前一百长度 print "*****************"*
links = re.findall(r'href="(.*?)"', resq.text)#查找所有包含href内容
#print links
print len(links)
valid_link = []#保存有效连接
invalid_link = []#保存无效连接 print "*****************"* for link in links:
if re.search(r"(\.jpg)|(\.jpeg)|(\.gif)|(\.ico)|(\.png)|(\.js)|(\.css)$", link.strip()):#资源连接筛选出来
#print , link
invalid_link.append(link.strip())
continue#进入此判断之后执行完直接执行下一次循环
elif link.strip() == "" or link.strip() == "#" or link.strip() == "/":#无效内容筛选去除
#print ,link
invalid_link.append(link)
continue
elif link.strip().startswith("//"):#把有效相对连接筛选保存
#print ,link
valid_link.append("http:" + link.strip())
continue
elif link.strip().count("javascript") >= or link.strip().count("mailto:") >= :#引用js连接及邮箱超级连接去除
#print ,link
invalid_link.append(link.strip())
continue
elif re.match(r"/\w+", link):#把剩下所有内容连接再做进一步筛选
#print ,link
if re.match(r"http://.*?/", resq.url.strip()):#http开头连接筛选
valid_link.append(re.match(r"http://.*?/", resq.url.strip()).group() + link.strip())#把连接以/结尾内容保存
else:
valid_link.append(re.match(r"http://.*", resq.url.strip()).group() + link.strip())#把连接以内容结尾保存
continue
else:
#print ,link
valid_link.append(link.strip())#筛选剩下的内容都保存到有效列表中 print "*****************"* file_num = #为创建文件准备
for link in list(set(valid_link)):
# print link
resq = requests.get(link, verify=True)#允许证书校验并访问所有保存的有效连接
if u"篮球" in resq.text:#筛选网页内容中是否存在“篮球”内容
#print link
if u'meta charset="utf-8"' in resq.text:#判断网页是否以utf-8编码
with open(r"e:\\test4\\crawler\\" + str(file_num) + ".html", "w") as fp:
fp.write(resq.text.strip().encode("utf-8"))#编码内容为utf-8后保存到指定目录
else:
with open(r"e:\\test4\\crawler\\" + str(file_num) + ".html", "w") as fp:
fp.write(resq.text.strip().encode("gbk"))#编码内容为gbk后保存到指定目录
file_num += print "Done!"

【Python】爬虫-1的更多相关文章

  1. Python 爬虫模拟登陆知乎

    在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...

  2. python爬虫成长之路(一):抓取证券之星的股票数据

    获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...

  3. python爬虫学习(7) —— 爬取你的AC代码

    上一篇文章中,我们介绍了python爬虫利器--requests,并且拿HDU做了小测试. 这篇文章,我们来爬取一下自己AC的代码. 1 确定ac代码对应的页面 如下图所示,我们一般情况可以通过该顺序 ...

  4. python爬虫学习(6) —— 神器 Requests

    Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...

  5. 批量下载小说网站上的小说(python爬虫)

    随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...

  6. python 爬虫(二)

    python 爬虫 Advanced HTML Parsing 1. 通过属性查找标签:基本上在每一个网站上都有stylesheets,针对于不同的标签会有不同的css类于之向对应在我们看到的标签可能 ...

  7. Python 爬虫1——爬虫简述

    Python除了可以用来开发Python Web之后,其实还可以用来编写一些爬虫小工具,可能还有人不知道什么是爬虫的. 一.爬虫的定义: 爬虫——网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区 ...

  8. Python爬虫入门一之综述

    大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...

  9. [python]爬虫学习(一)

    要学习Python爬虫,我们要学习的共有以下几点(python2): Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy ...

  10. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

随机推荐

  1. 将一台电脑上的虚拟机上的系统复制到另一台电脑的虚拟机上!!!and想询问大神们问题的解决办法??

    虚拟机是Oracle VM VitualBox版本 前段日子oracle老师让课下安装虚拟机+windows8+oracle数据库,但悲伤的我安了七八遍(重装系统+安装数据库+配置数据库)依旧在配置数 ...

  2. 导出csv文件数字会自动变科学计数法的解决方法

    其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法:如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0.解决 ...

  3. Ubuntu下忘记MySQL root密码解决方法

    1.忘了mysql密码,从网上找到的解决方案记录在这里. 编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld]段下加入一行“skip-grant-tables”. 2.重启服 ...

  4. leetcode-algorithms-8 String to Integer (atoi)

    leetcode-algorithms-8 String to Integer (atoi) Implement atoi which converts a string to an integer. ...

  5. Spring Boot集成Thymeleaf

    Thymeleaf是一个java类库,是一个xml/xhtml/html5的模板引擎,可以作为mvc的web应用的view层.Thymeleaf提供了额外的模块与Spring MVC集成,所以我们可以 ...

  6. JTA 使用 MySQL 分布式事务

    假定在MySQL实例1上有表 create table person( id int, name ) ) MySQL实例2上也有一张同样的表,现在从实例1中的 person 表中删除一条数据,并把这条 ...

  7. 转: Linux mount/unmount命令

    https://blog.csdn.net/okhymok/article/details/76616892 楼主具体哪里转的 我不清楚 好像没看到原始出处 开机自动挂载 如果我们想实现开机自动挂载某 ...

  8. LY.JAVA面向对象编程.包的概述、导包

    2018-07-18 08:46:57 导包:

  9. linux文件管理 文件权限

    文件权限介绍 [root@ssgao1987 ~]# ls -l 总用量 24 -rw-------. 1 root root  1161 7月   8 10:30 anaconda-ks.cfg - ...

  10. asp.netmvc 三层搭建一个完整的项目

    接下来用 asp.net mvc 三层搭建一个完整的项目: 架构图: 使用的数据库: 一张公司的员工信息表,测试数据 解决方案项目设计: 1.新建一个空白解决方案名称为Company 2.在该解决方案 ...