爬虫系列
豆豆orz
听一曲风声,画两道身影,说三生有幸遇见你。
展开
-
爬虫系列0安装虚拟环境
easy_install virtualenvvirtualenv venvdeactivescripts activepip install django==1.8.18资源网址https://bitbucket.org/wswp/code/src/tip/chapter02/linkcrawler.py原创 2017-11-12 10:52:56 · 475 阅读 · 0 评论 -
爬虫系列13.BeautifulSoup 输出
格式化输出 prettify()方法,将文档树格式化以后以Unicode码输出,每个标签都独占一行 BeautifulSoup 对象和它的tag节点都可以调用 prettify() 方法压缩输出 如果只想得到结果字符串,不重视格式,那么可以对一个 BeautifulSoup 对象或 Tag 对象使用Python的 unicode() 或 str() 方法 str() 方法返回UTF-8编码的字符串,原创 2017-11-13 11:34:14 · 470 阅读 · 0 评论 -
爬虫系列14.Lxml
Lxml是基于libxml2这一XML解析库的Python封装。 该模块使用C语言编写解析速度比Beautiful Soup 更快导入模块: import lxml.html 修复html,解析两侧缺失的引号,并闭合标签 tree = lxml.html.fromstring(broken_html) 将网页 fixd_html = lxml.html.tostring(tree, pretty_p原创 2017-11-13 11:34:43 · 284 阅读 · 0 评论 -
爬虫系列15、为链接添加一个回调函数类
class ScrapeCallback: def __init__(self): self.writer = csv.writer(open('countries.csv','w')) # 表头 self.fields = ('area', 'ranked', 'university') self.writer.writero原创 2017-11-13 11:36:20 · 350 阅读 · 0 评论 -
爬虫系列16.urlparse模块
res = urlparse.urlparse(url,scheme,allow_fragments)返回一个6-tuple,类型是ParseResult(scheme, netloc, path, params, query, fragment)ParseResult类还有几个常用方法:res.usernameres.passwordres.hostnameres.portres.g原创 2017-11-15 21:54:22 · 339 阅读 · 0 评论 -
爬虫系列17.urllib2模块
1.urllib2简介 urllib2提供一个基础函数urlopen,通过向指定的URL发出请求来获取数据。最简单的形式就是 import urllib2 response = urllib2.urlopen(url) html = response.read() 基于请求响应模型,上述过程可以分为两步: 1.指定一个域名,并发送一个请求。原创 2017-11-15 22:00:16 · 243 阅读 · 0 评论 -
爬虫系列18.下载框架
# -*- coding:utf8 -*-import reimport urlparseimport urllib2import timefrom datetime import datetimeimport robotparserimport Queueimport csvimport lxmldef link_crawler(seed_url, link_regex=None原创 2017-11-15 22:27:19 · 323 阅读 · 0 评论 -
爬虫系列19.主流文件系统
“` Linux: 文件系统: EXT3 / EXT4 非法文件名字符: / 和\0 文件名最大长度:255 字节 OS X 文件系统:HFS Plus 非法文件名字符: : 和 \0 文件名最大长度: 255 个UTF - 16 编码单元 Windows: 文件系统: NTFS 非法文件名字符:\、 / 、: 、 * 、”、 >、 <、和 | 所以用url作为文件原创 2017-11-15 22:28:12 · 295 阅读 · 0 评论 -
爬虫系列20.Celery - 分布式任务队列
celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。它侧重于实时操作,但对调度支持也很好。celery用于生产系统每天处理数以百万计的任务。celery是用Python编写的,但该协议可以在任何语言实现。它也可以与其他语言通过webhooks实现。建议的消息代理RabbitMQ的,但提供有限支持Redis, Beanstalk, MongoDB, CouchDB, ,和数据库原创 2017-11-15 22:29:09 · 848 阅读 · 0 评论 -
爬虫系列12.BS4修改文档树
修改tag的名称和属性 重命名一个tag,改变属性的值,添加或删除属性: soup = BeautifulSoup(‘Extremely bold‘) tag = soup.btag.name = "blockquote"tag['class'] = 'verybold'tag['id'] = 1tag# <blockquote class="verybold" id=原创 2017-11-13 11:33:46 · 739 阅读 · 0 评论 -
爬虫系列11.BS4遍历文档树
子节点: tag名字: soup.head soup.title,支持链式调用,soup.body.b,只能获取当前名字的第一个tag 如果想获得所有的子节点,调用find_all()方法;soup.find_all(‘a’)tag属性: .contents:将tag的直接子节点,不包含孙子辈一列表的形式输出 .children:生成器,可以对tag的原创 2017-11-13 11:33:26 · 624 阅读 · 0 评论 -
爬虫系列10.BS4简介
1. 安装bs4,lxml,html5libeasy_install beautifulsoup4 pip install beautiful4 -linux:sudo python setup.py install如果代码抛出了 ImportError 的异常: “No module named HTMLParser”, 这是因为你在Python3版本中执行Python2版本的代码.如原创 2017-11-13 11:33:01 · 456 阅读 · 0 评论 -
爬虫系列2常见网络错误
一些常见的状态码为:200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用详细分解:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。 代码 说明 100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。2xx (成功)原创 2017-11-12 10:59:20 · 2907 阅读 · 0 评论 -
爬虫系列3网站构建技术类型
可以检查网站构建的技术类型builtwith 模块pip install builtwithimport builtwithbuiltwith.parse('https://www.douban.com'){u'javascript-frameworks': [u'jQuery'], u'tag-managers': [u'Google Tag Manager'], u'analytics':原创 2017-11-12 11:00:08 · 204 阅读 · 0 评论 -
爬虫系列4查看网站所有者
查看网站所有者pip install python-whoisimport whoisprint whois.whois('baidu.com'){"updated_date": ["2017-07-28 02:36:28","2017-07-27T19:36:28-0700"],"status": ["clientDeleteProhibited https://icann.org/原创 2017-11-12 11:02:35 · 514 阅读 · 0 评论 -
爬虫系列5爬取网站方法
爬取网站的方法:爬取网站地图1遍历每个网页的数据库ID;跟踪网页链接。原创 2017-11-12 11:04:04 · 490 阅读 · 0 评论 -
爬虫系列6下载一个网页(异常处理,用户代理,重试次数)
# -*- coding: utf-8 -*-import urllib2# 下载网页def download(url): return urllib2.urlopen(url).read()# 可能会遇到一些无法遇见的错误,可能会抛出异常# 捕捉异常版def download(url): print 'Downloading:', url try:原创 2017-11-12 11:09:18 · 370 阅读 · 0 评论 -
爬虫系列7深度遍历网页
# 所以我们要过滤掉相同的链接seen = set()def link_crawler(seed_url, link_regex):'''给一个url种子,爬取能找到的所有链接:param send_url: 第一个url种子:param link_regex:匹配网页的正则表达式:return:'''crwal_queque = [seed_url]while crwal_qu原创 2017-11-13 11:26:58 · 788 阅读 · 0 评论 -
爬虫系列8解析robots.txt
import robotparser rp = robotparser.RobotFileParser() rp.set_url('url/robot.txt') rp.read()user_agent = 'Spider' rp.can_fetch(user_agent, url)Boolean变量可以检测代理是否可以爬取原创 2017-11-13 11:27:27 · 427 阅读 · 0 评论 -
爬虫系列9CSV模块
csv文件格式是一种通用的电子表格和数据库导入导出格式。1、文件读写 首先打开一个文件,以二进制形式打开 用csv.reader(file)读取文件,返回列表 for row in reader: row[0] row[1] 用csv.writer(file)写入文件 writer.writerows(someiterable)# 读取cs原创 2017-11-13 11:32:34 · 380 阅读 · 0 评论 -
爬虫系列21.Pyside模块
Pyside有15个模块,支持对GUI,多媒体,XML,网络以及数据库进行操作。本教程主要学习两模块。QtCore和QtGuiQtCore是非界面功能模块,主要对文件目录,数据类型,输入输出流,url以及线程等提供支持。QtGui提供了对常见界面元素的支持,例如,对话框,窗口,状态栏,工具栏等等。#导入模块:import sysfrom PySide.QtCore import *原创 2017-11-15 22:29:42 · 549 阅读 · 0 评论