Python
文章平均质量分 69
bluespacezero
这个作者很懒,什么都没留下…
展开
-
向scrapy中的spider传递参数的几种方法
有时需要根据项目的实际需求向spider传递参数以控制spider的行为,比如说,根据用户提交的url来控制spider爬取的网站。在这种情况下,可以使用两种方法向spider传递参数。第一种方法,在命令行用crawl控制spider爬取的时候,加上-a选项,例如:scrapy crawl myspider -a category=electronics然后在spider里这样写:原创 2016-02-26 11:55:37 · 42664 阅读 · 7 评论 -
使用Scrapy抓取需要登录的网站
经常在爬有些网站的时候需要登录,大多数网站需要你提供一个用户名和密码,在这种情况下,需要先向网站发送一个POST请求。可以使用Scrapy的FormRequest类,这个类和Request类很相似,只是多了一个extra参数,用这个参数可以传递表单数据。要使用这个类,先导入:from scrapy.http import FormRequest然后把start_urls替换成start_reques原创 2016-04-01 16:51:55 · 13345 阅读 · 0 评论 -
scrapy处理JSON API
有时候你会发现你需要的数据在原始的HTML页面上找不到。比如下面这种情况:右击查看元素会看到一个普通的DOM树,但是用scrapy shell或右击选择查看源代码的时候,会发现源代码中没有任何信息。在这种情况下,可以F12打开开发者工具,选择Network界面,在左边的列表里就能看到浏览器为加载此页面而发出的所有请求。这里有三项:static/已经看过了(URL就是),jquery.min.js是一原创 2016-04-07 10:54:38 · 4045 阅读 · 0 评论 -
scrapy用不同规则抓取多个网站(基于csv文件)以及向爬虫传递参数(参数可默认)
大多数情况下每个网站对应一个爬虫,但是也有很多时候需要一个爬虫抓取多个网站,而它们之间的唯一区别只是XPath表达式不同。在这种情况下,对应每个网站编写一个爬虫有些大材小用,只需一个爬虫即可解决。首先创建一个.csv文件 ,按照下图填写一些url和XPath表达式,保存为todo.csv并放到工程的目录(也就是scrapy.cfg文件所在的目录)。Python有一个内建的库专门处理.csv文件,需引原创 2016-04-07 14:45:59 · 8355 阅读 · 2 评论 -
Twisted之Deferred(二)
本文是对twisted.internet.defer.Deferred对象的一个简单介绍,并且涵盖了如何在函数返回Deferred对象后使用这些对象。本文假设你已经熟悉了Twisted框架结构的基本原则:异步的、基于回调函数式的编程。在你的程序中不要使用那些会引起阻塞的代码或者使用线程来运行那些阻塞的代码,你只需要使用立即返回的函数并且当数据可用时就开始回调函数链的调用。读完本文后,你应当已经能处理原创 2016-04-15 18:04:24 · 1422 阅读 · 0 评论 -
理解Twisted与非阻塞编程
先来看一段代码:# ~*~ Twisted - A Python tale ~*~from time import sleep# Hello, I'm a developer and I mainly setup Wordpress.def install_wordpress(customer): # Our hosting company Threads Ltd. is bad. I s原创 2016-04-18 12:56:28 · 1784 阅读 · 0 评论 -
Twisted之Deferred(一)
本文的目的是介绍Deferred,Twisted的控制异步代码流的机制,不要求你有Twisted的相关知识,只需知道知道Python语法即可。代码的执行顺序写Python代码时,一个很流行的常识就是同一个代码块中某行代码,只有在它前面的一行代码执行完毕之后才会轮到它执行:pod_bay_doors.open()pod.launch()只有分离舱门打开,然后吊舱才能发射。一行接着一行地执行是Pyth原创 2016-04-14 16:17:15 · 1473 阅读 · 0 评论 -
Python多进程写入同一文件
最近用python的正则表达式处理了一些文本数据,需要把结果写到文件里面,但是由于文件比较大,所以运行起来花费的时间很长。但是打开任务管理器发现CPU只占用了25%,上网找了一下原因发现是由于一个叫GIL的存在,使得Python在同一时间只能运行一个线程,所以只占用了一个CPU,由于我的电脑是4核的,所以CPU利用率就是25%了。既然多线程没有什么用处,那就可以使用多进程来处理,毕竟多进程是可以不受原创 2016-07-16 10:18:49 · 38589 阅读 · 6 评论 -
Python 字符串处理特殊空格 \xc2\xa0 Non-breaking space
今天遇到一个问题,使用python的find函数寻找字符串中的第一个空格时没有找到正确的位置,例如:http://zc.whmc.edu.cn ==> 无法访问的网站或无效的招标网站使用find(" ")函数寻找时找到的第一个空格对应在==>后面的那个位置。一开始觉得是编码问题,但是文件是用UTF-8编码的,按理说不应该产生编码问题,就用Sublime打开一看是这样的:可以看到,我的Sublime设原创 2016-10-31 18:01:07 · 14464 阅读 · 0 评论