网络爬虫
xsj_blog
这个作者很懒,什么都没留下…
展开
-
Python爬虫学习系列教程
出自:静觅 的博客大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多。学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流。Python版本:2.7 一、爬虫入门 Python爬虫入门一之综述Python爬虫入门二之爬虫基础了解Python爬虫入门三之转载 2016-06-18 10:46:42 · 826 阅读 · 0 评论 -
【已解决】安装Scrapy过程中出错:ERROR: ‘xslt-config’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
【解决过程】在http://pypi.python.org/simple/lxml/,下载win10 x64的:lxml-2.2.8.win-amd64-py2.7.exe然后重新打开cmd去pip install Scrapy,解决了此xml的问题了。原创 2016-08-04 20:25:40 · 5198 阅读 · 3 评论 -
selenium 用法总结
参考文档:http://selenium-python-zh.readthedocs.io/en/latest/selemium 的安装selemium 简单示例from selenium import webdriver#以下三种浏览器的作用是相同的driver = webdriver.PhantomJS() #无头浏览器,即没有界面的浏览器,driver = webdriver.Fir原创 2017-03-26 16:24:41 · 2114 阅读 · 0 评论 -
selenium 查找元素方法的总结
一次查找多个元素find_element_by_idfind_element_by_namefind_element_by_xpathfind_element_by_link_textfind_element_by_partial_link_textfind_element_by_tag_namefind_element_by_class_namefind_element_by_css原创 2017-03-26 16:31:17 · 3439 阅读 · 0 评论 -
数据去重
数据去重的两种方式第一种:不考虑顺序,数据去重通过集合的方式:>>> a[1, 5, 2, 1, 9, 1, 5, 10]>>> set(a){1, 2, 10, 5, 9}>>>通过字典的键的方式:这里写代码片第二种:考虑顺序,数据去重如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题def dedupe(items): seen = se原创 2017-03-26 17:54:23 · 1071 阅读 · 0 评论 -
异步任务神器 Celery 快速入门
简介在程序运行过程中,要执行一个很久的任务,但是我们又不想主程序被阻塞,常见的方法是多线程。可是当并发量过大时,多线程也会扛不住,必须要用线程池来限制并发个数,而且多线程对共享资源的使用也是很麻烦的事情。还有协程,但是协程毕竟还是在同一线程内执行的,如果一个任务本身就要执行很长时间,而不是因为等待IO被挂起,那其他协程照样无法得到运行。在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免原创 2017-03-27 23:50:45 · 1358 阅读 · 0 评论 -
celery分布式
Celery的分布式实际包含两个层次:Distribute work on a given machine across all CPUsDistribute work to many machines先说第一点,默认情况下,Celery在一台机器上启动worker,worker的进程数量和机器的CPU个数一致。比如你的机器只有一个CPU,例如,同时启动5个worker进程,其中concurr原创 2017-04-15 02:41:01 · 2101 阅读 · 0 评论 -
celery 分布式框架详解
Celery 结构图如果没有celery,让你自己设计一个异步任务队列你怎么做。首先,要有一个发起任务的client,选定一定保存任务信息的媒介,由一个worker去一直监听这个信息媒介,这个worker最好是多进程的,另外可以兼容尽可能多得信息媒介。好吧,这个不就是celery所做的事儿么,celery兼容多个broker,既是任务发起者又是执行者,另外支持多进程…还有好多通用功能考虑。celer原创 2017-04-15 02:11:53 · 2336 阅读 · 0 评论 -
Celery 消息队列
简介在不同系统(或物理设备)之间,应用软件之间,程序进程之间,常常会有各种互相的信息传递;为保证消息传递的可靠性,对所传消息引入一个保存的容器:一方面用来接收发送者产生的信息,一方面在接收者正常的情况下完成消息的派送,并在无法接收消息时对信息进行存储,然后在适当的时机完成信息的派送。一般称该容器为消息队列。适用场景对于部分需要较长时间处理的任务类型,采用传统的同步处理方式会带来较长时间的性能损耗或是原创 2017-04-15 03:25:04 · 9381 阅读 · 0 评论 -
基本的正则表达式
findall的使用* . (点)的使用*# . (点)的使用举例,点相当于一个占位符>>> a = 'xy123'>>> b = re.findall('x.',a)>>> b['xy']>>>>>>>>> b = re.findall('x..',a)>>> b['xy1']>>>>>>>>> b = re.findall('x...',a)>>> b['xy12'原创 2016-08-27 10:46:11 · 885 阅读 · 1 评论 -
并发和并行抓取数据总结
首先介绍并发、并行、异步和同步的概念,然后介绍 Python 中实现这些技术的主要方式,包括多线程、多线程、协程 gevent 、asyncio、及 futures 等实现方式。并发与并行并发是指在一个时间段内发生若干时间的情况。 并行是指同一时刻发生若干事件的情况。下面用单核和多核 CPU 的工作方式来说明这两个概念。并发:在单核 CPU 的情况下,多任务操作系统的各任务是以并发的方式运行的,因原创 2017-04-02 19:08:20 · 1661 阅读 · 0 评论 -
Scrapyd 使用
Scrapyd 安装在 Linux 服务器终端运行如下命令pip3 install scrapyd服务器的爬虫各种命令列出所有爬虫项目curl http://localhost:6800/listprojects.json列出项目版本curl http://localhost:6800/listversions.json?project=myproject启动爬虫curl http://localh原创 2017-12-20 14:03:50 · 547 阅读 · 0 评论 -
爬虫请求并保存图片
requests 模块的用法 pic_res = requests.get(url, cookies=cookies, headers=headers)with open('tmp.jpg', 'wb') as file: file.write(pic_res.content)Scrapy 框架 request 用法def start_requests(self):原创 2018-02-01 18:22:16 · 1500 阅读 · 0 评论 -
在scrapy中,不过滤重复的请求
Scrapy提供了一个内置的重复请求过滤器,用于根据网址过滤重复的请求。可以根据业务需求制定规则过滤重复的请求基于url过滤重复的请求假设已访问过http:://www.abc.com/p/xyz.html?id=1234&refer=4567我想做的是过滤请求,如:http:://www.abc.com/p/xyz.html?id=1234&refer=5678通原创 2018-02-01 18:37:12 · 7206 阅读 · 0 评论 -
Mechanize模拟浏览器
简介:Mechanize 是一个 Python 模块,用于模拟浏览器。该模块能够处理网页登录所要求的用户名,密码,验证码。该模块的具体用法如下使用方法一import mechanize #导入模块br = mechanize.Browser()br.set_handle_equiv(True)br.set_handle_redirect(True)br.set_handle_referer(T原创 2017-01-19 22:53:46 · 3550 阅读 · 0 评论 -
Python中PyQuery库的使用总结
pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,我个人写过的一些抓取网页数据的脚本就是用它来解析html获取数据的。他的官方文档地址是:http://packages.python.org/pyquery/。今天重新看了一遍整个文档,把它的一些使用方法整理了一下,做个记录。使用方法 from pyquery import PyQuery as pq1.可加载一段HT转载 2016-07-05 00:41:00 · 1253 阅读 · 0 评论 -
collections
出自:廖雪峰的博客collections是Python内建的一个集合模块,提供了许多有用的集合类。OrderedDict是dict的子类,它记住了内容添加的顺序。使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict:>>> from collections import OrderedDict>>> d = dict转载 2016-07-06 01:36:33 · 1184 阅读 · 0 评论 -
使用pyquery碰到的问题
假设题目如下dateHtml = v_source('series').find('value') #将以series开头的value标签的html段落过滤print dateHtml输出html段落结果如下<value xid="0">2013-07-07</value><value xid="1">2013-07-08</value><value xid="2">2013-原创 2016-07-06 11:37:53 · 1988 阅读 · 0 评论 -
Python获取网页源码
Py2k中直接导入urllib2,就可以读取网页源码。import urllib2content = urllib2.urlopen('http://www.baidu.com/').read()print(content)Py3k中取消了urllib2,需要导入urllib.request,等同于Py2k中的urllib2,不过需要转码才能够正确显示。import urllib.reques原创 2016-07-07 19:32:00 · 4318 阅读 · 0 评论 -
通过GET和POST方式获取页面内容
网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。HTTP协议中定义了四个与服务器进行交互的方法,分别是GET, POST,PUT,DELETE ,实际对应对服务器内容的“增”删“改”查“四个操作。本篇文章主要记录我学习GET和POST请求方式的过程首先,如何区分GET 和POST请求?我们可以简单地通过浏览器地址栏是否改变来加转载 2016-08-28 20:03:43 · 11392 阅读 · 0 评论 -
PDFMiner 操作 PDF 文件
PDFMiner介绍PDFMiner是一个可以从PDF文档中提取信息的工具。与其他PDF相关的工具不同,它注重的完全是获取和分析文本数据。- PDFMiner允许你获取某一页中文本的准确位置和一些诸如字体、行数的信息。它包括一个PDF转换器,可以把PDF文件转换成HTML等格式。它还有一个扩展的PDF解析器,可以用于除文本分析以外的其他用途。 PDFMiner内置两个好用的工具:pdf2tx原创 2016-08-28 20:28:34 · 6812 阅读 · 5 评论 -
网络爬虫的采集,处理,存储
#coding:utf-8import _mysql,sysimport timeimport socketimport randomimport MySQLdbfrom Queue import Queuefrom threading import Threadfrom bs4 import BeautifulSoupfrom selenium import webdriver原创 2016-08-13 22:42:34 · 1596 阅读 · 0 评论 -
csv文件的读取
读取 CSV 文件 python 的 CSV 库主要是面向本地文件,但进行网络数据采集的时候,很多文件都是在线的。有以下方法可以解决这个问题。手动把 CSV 文件下载到本机,然后用 python 定位文件位置;写 python 程序下载文件,读取之后再把源文件删除;从网上直接把文件读成一个字符串,然后转换成一个StringIO对象,使它具有文件的属性。 综上,应选择第三种比较好,即直接把原创 2016-08-14 10:47:25 · 4385 阅读 · 0 评论 -
Ubuntu 16.04 下安装 Phantomjs
sudo apt-get install phantomjs检查是否正常工作,输入以下命令:phantomjs --version若显示当前版本号,则 Phantomjs 安装成功。原创 2016-09-21 20:55:49 · 15321 阅读 · 8 评论 -
Python 异步网络爬虫 I
http://www.tuicool.com/articles/EzMjAzy http://python.jobbole.com/86795/转载 2016-12-19 13:38:01 · 603 阅读 · 0 评论 -
scrapy的安装和安装错误及解决方法
安装 scrapysudo apt-get install build-essentialsudo apt-get install python-devsudo apt-get install libxml2-devsudo apt-get install libxslt1-devsudo apt-get install python-setuptoolssudo easy_install原创 2017-02-19 04:10:04 · 1721 阅读 · 0 评论 -
使用 Chrome 获取 Cookie 的数据
Chrome 浏览器自带的开发功能相当强大,这里只使用它的抓包功能。 一、在浏览器中打开目标网站并登录,进入目标页面。二、在 Chrome 浏览器下方的开发工具中单击 Network 标签页。按 F5 键,刷新页面。会在浏览器中得到很多数据,然后在 Filter 框中输入目标页面的关键词,找到发送请求的Request三、单击该关键词的Request,在打开的界面中单击 Headers 标签,得到这原创 2017-01-19 23:39:24 · 21601 阅读 · 0 评论 -
Selenium 模拟浏览器
Selenium模块的安装Windows 下安装pip install seleniumLinux下安装apt-get install python-selenium原创 2017-01-19 23:50:40 · 943 阅读 · 0 评论 -
requests 登陆的几种方法
一、通过账户名和密码登陆访问formData={'username':'*****', 'password':'*****'} #需要带 cookies,则带上 cookies res = req.post(url, data=formData, cookies=cookies, headers=headers) 二、通过cookie来访问 从浏览器中获原创 2018-02-01 18:49:49 · 1893 阅读 · 0 评论