爬虫
文章平均质量分 59
perfectsorrow
这个作者很懒,什么都没留下…
展开
-
多线程抓取糗事百科
#!/usr/bin/env python# -*- coding:utf-8 -*-import threadingfrom Queue import Queuefrom lxml import etreeimport requestsimport jsonimport timeclass ThreadCrawl(threading.Thread): def __in...原创 2018-04-22 09:35:25 · 237 阅读 · 0 评论 -
requests
虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:)Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使...转载 2018-04-20 16:09:35 · 159 阅读 · 0 评论 -
深度遍历与广度遍历
#深度优先 递归def depth_tree(tree_node): if tree_node is not None: print(tree_node._date) for i in tree_node: if i is not None: return depth_tree(i)#广度优先 队列...原创 2018-04-20 20:03:10 · 266 阅读 · 0 评论 -
python 正则匹配生日
import reline = "xxx出生于2001年6月1日"# line = "xxx出生于2001年06月01日"# line = "xxx出生于2001年6月"# line = "xxx出生于2001/06/01"# line = "xxx出生于2001/06/01"# line = "xxx出生于2001/06"# line = "xxx出生于2001原创 2018-04-20 20:09:32 · 2641 阅读 · 0 评论 -
python 正则
match()import repattern = re.compile(r'\d+')m = pattern.match('12one')print mprint m.group()print m.start()print m.end()print m.span()import repattern = re.compile(r'([a-z]+) ([a-z]+)', re.I)...原创 2018-04-20 20:13:38 · 171 阅读 · 0 评论 -
python 抓取内涵段子
#coding:utf-8import urllib2import reclass Spider: def __init__(self): self.page = 1 self.switch = True def loadPage(self): print "正在下载数据...." url = "http://...原创 2018-04-21 13:29:24 · 221 阅读 · 0 评论 -
抓取百度贴吧图片
# -*- coding:utf-8 -*-import urllibimport urllib2from lxml import etreedef loadPage(url): request = urllib2.Request(url) html = urllib2.urlopen(request).read() content = etree.HTML(ht...原创 2018-04-21 15:38:44 · 257 阅读 · 0 评论 -
xpath 与 lxml
什么是XMLXML 指可扩展标记语言(EXtensible Markup Language)XML 是一种标记语言,很类似 HTMLXML 的设计宗旨是传输数据,而非显示数据XML 的标签需要我们自行定义。XML 被设计为具有自我描述性。XML 是 W3C 的推荐标准W3School官方文档:http://www.w3school.com.cn/xml/index.aspXML 和 HTML 的区...转载 2018-04-21 16:06:35 · 133 阅读 · 0 评论 -
CSS 选择器:BeautifulSoup4
和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器...转载 2018-04-21 16:07:28 · 139 阅读 · 0 评论 -
抓取腾讯职位
from bs4 import BeautifulSoupimport urllib2import urllibimport jsondef tencent(): url = 'http://hr.tencent.com/' request = urllib2.Request(url + 'position.php?&start=10#a') respon...原创 2018-04-21 17:13:37 · 193 阅读 · 0 评论 -
数据提取之JSON与JsonPATH
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。JSON和XML的比较可谓不相上下。Python 2.7中自带了JSON模块,直接import json就可以使用了。官方文档:http://docs.python.org/lib...转载 2018-04-21 17:36:36 · 2137 阅读 · 0 评论 -
抓取糗事百科
# -*- coding:utf-8 -*-import requestsfrom lxml import etreepage = 1url = "https://www.qiushibaike.com/text/page/" + str(page)headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows ...原创 2018-04-21 18:19:52 · 222 阅读 · 0 评论 -
scrapy框架
Scrapy 框架Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各...转载 2018-05-04 10:58:52 · 230 阅读 · 0 评论 -
urllib2 的异常错误处理
URLErrorimport urllib2request = urllib2.Request('http://www.ajkfhafwjqh.com')try: urllib2.urlopen(request, timeout=5)except urllib2.URLError, err: print errHTTPErrorimport urllib2request ...原创 2018-04-20 15:45:36 · 406 阅读 · 0 评论 -
urllib2 cookie
cookielib库 和 HTTPCookieProcessor处理器 1. 获取Cookie,并保存到CookieJar()对象中 import urllib2import cookielibcookiejar = cookielib.CookieJar()handler = urllib2.HTTPCookieProcessor(cookiejar)opener = urlli...原创 2018-04-20 15:37:14 · 414 阅读 · 0 评论 -
Handler处理器和自定义Opener
简单的自定义opener()import urllib2http_handler = urllib2.HTTPHandler(debuglevel=1)#http_handler = urllib2.HTTPSHandler()opener = urllib2.build_opener(http_handler)request = urllib2.Request("http://www.b...原创 2018-04-20 13:59:46 · 153 阅读 · 0 评论 -
关于反爬虫,这一篇就够了
你被爬虫侵扰过么?当你看到“爬虫”两个字的时候,是不是已经有点血脉贲张的感觉了?千万要忍耐,稍稍做点什么,就可以在名义上让他们胜利,实际上让他们受损失。一、为什么要反爬虫1、爬虫占总PV比例较高,这样浪费钱(尤其是三月份爬虫)。三月份爬虫是个什么概念呢?每年的三月份我们会迎接一次爬虫高峰期。最初我们百思不得其解。直到有一次,四月份的时候,我们删除了一个url,然后有个爬虫不断的爬取url,导致大量...转载 2018-04-22 10:00:08 · 944 阅读 · 3 评论 -
Selenium 和 PhantomJS
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。Selenium 自己不带浏...转载 2018-04-22 14:24:55 · 123 阅读 · 0 评论 -
selenium + phantomjs 登录豆瓣
#coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport timeimport urllibimport sysreload(sys) sys.setdefaultencoding( "utf-8" )driver = webdriver.Ph...原创 2018-04-22 15:51:20 · 183 阅读 · 0 评论 -
斗鱼抓取
#coding:utf-8from selenium import webdriverfrom bs4 import BeautifulSoup as bsdriver = webdriver.PhantomJS()driver.get("https://www.douyu.com/directory/all")while True: soup = bs(driver.page...原创 2018-04-22 16:16:38 · 1459 阅读 · 0 评论 -
Tesseract
import pytesseractfrom PIL import Imageimage = Image.open('./test.png')text = pytesseract.image_to_string(image)print text原创 2018-04-22 20:40:33 · 504 阅读 · 0 评论 -
Scrapy Shell
Scrapy ShellScrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据。如果安装了 IPython ,Scrapy终端将使用 IPython (替代标准Python终端)。 IPython 终端与其他相比更为强大,提供智能的自动补全,高亮输出,及其他特性。(推荐安装IPy...转载 2018-04-23 17:27:43 · 152 阅读 · 0 评论 -
通用爬虫和聚焦爬虫
根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.通用爬虫通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。通用搜索引擎(Search Engine)工作原理通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否...转载 2018-04-19 16:55:07 · 346 阅读 · 0 评论 -
HTTP代理神器Fiddler
Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP请求。 Fiddler启动的时候,默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置。工作原理Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888Fiddler抓取HTTPS设置启动Fiddler,打开菜单栏中的 Tools > Telerik...转载 2018-04-19 17:35:51 · 143 阅读 · 0 评论 -
urllib2库
urllib2库的基本使用Request,urlopen,add_headerimport urllib2import randomua_list = [ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv2.0.1) Gecko/20100101 Firefox/4.0.1", "Mozilla/5.0 (Wind...原创 2018-04-20 10:40:43 · 110 阅读 · 0 评论 -
抓取百度贴吧
#coding:utf-8import urllibimport urllib2def tiebaSpider(url, beginPage, endPage): for page in range(beginPage, endPage + 1): pn = (page - 1) * 50 filename = "the" + str(page) ...原创 2018-04-20 10:42:18 · 125 阅读 · 0 评论 -
Scrapy 和 scrapy-redis的区别
Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。pip install scrapy-redisScrapy-redis提供了下面四种组件(components):(四种组件意味着这四个模块都要做相应的修改)SchedulerDuplication FilterItem Pip...转载 2018-05-04 16:03:34 · 257 阅读 · 0 评论