15

初识python爬虫框架scrapy

好东西要学习

项目目录结构

这些文件分别是:

  • scrapy.cfg: 项目的配置文件
  • tutorial/: 该项目的python模块。之后您将在此加入代码。
  • tutorial/items.py: 项目中的item文件.
  • tutorial/pipelines.py: 项目中的pipelines文件.
  • tutorial/settings.py: 项目的设置文件.
  • tutorial/spiders/: 放置spider代码的目录.

接下来,进入到项目目录中:

创建一个新的spider:

可用的工具命令(tool commands)

可以通过运行命令来获取关于每个命令的详细内容:

您也可以查看所有可用的命令:

Scrapy提供了两种类型的命令。一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令)。全局命令在项目中运行时的表现可能会与在非项目中运行有些许差别(因为可能会使用项目的设定)。

全局命令:

项目(Project-only)命令:

自定义项目命令

您也可以通过 COMMANDS_MODULE 来添加您自己的项目命令。您可以以 scrapy/commands 中Scrapy commands为例来了解如何实现您的命令。

COMMANDS_MODULE

Default: '' (empty string)

用于查找添加自定义Scrapy命令的模块。

例子:

Continue reading

31

Python把HTML实体编码和Unicode编码\u转为中文汉字

某模块把获取的汉字转为HTML实体了,形式如〹 解码方法如下:

这样就把实体码翻译成汉语了。

PS. 实体码中有的符号不是&#开头,而是&开头的,匹配的时候要注意。

PSS. 实体码最后的分号不能少!

13

UnicodeDecodeError: ‘utf8′ codec can’t decode byte 0xc7 in position 0: invalid continuation byte

把获取到的信息转码为gbk就可以了

 

12

python使用代理爬页面返回403: Forbidden

前几天给使用Python写的爬虫加上了可以使用代理访问爬取页面内容的功能,刚开始几天测试是正常的,可以正确返回所需内容,突然这两天一使用代理就全部返回“403: Forbidden”,怎么也没想明白是哪儿的问题,后来我都怀疑是不是我脚本哪里写错了……

上面是一段测试代码,使用代理就返回403,最后实在是没办法了,想着在群里请教一下,结果有一位群友(3245935173)说让我试试使用“https”,测试结果,返回正确数据了,原来这是错在这里。

因为之前使用http协议是正确的,一定是代理网站后来修改了访问协议(http -> https),真是万万没想到啊。

07

python流程控制if小实验

在程序流程控制中,个人一直的习惯是判断某变量值是否为真……否则……

今天无意间有一个想法,想测试一个判断为真和判断为假哪个用时更短?结果有些出乎我的意料……

通过上面的小例子,可以说明在python项目的流程控制中,以否定的“逻辑非”来进行判断应该是首选的。

如果有异议,请一起学习交流。

06

User-Agent 汇总

目录:

  1. Android:
    Android 0.*
    Android 1.*
    Android 2.*
    Android 3.*
    Android 4.*
  2. Windows Phone OS
  3. BlackBerry
  4. SymbianOS:
    SymbianOS 3.*
    SymbianOS 6.*
    SymbianOS 7.*
    SymbianOS 8.*
    SymbianOS 9.*
  5. iPhone OS:
    iPhone OS 2_*
    iPhone OS 3_*
    iPhone OS 4_*
    iPhone OS 5_*
    iPhone(others)
  6. Mac OS X:
    Mac OS X 10_5*
    Mac OS X 10_6*
    Mac OS X 10_7*
    Mac OS X 10_8*
    Mac OS X 10_9*
    Mac OS X 10_10*
    Mac OS X(others)
  7. Wap
  8. UP浏览器(老版手机)
  9. X系统(一种老版系统)
  10. 含CLDC:
  11. Windows:
    Windows 2000
    Windows XP
    Windows Server 2003
    Windows 7
    Windows 8

Continue reading

06

CMD运行python项目中文乱码的解决方法

一般情况,原因是python项目编码是utf-8,面CMD默认编码是gbk,所以CMD运行python项目中文才会乱码的,那么我们如果不想修改python项目编码的话,那么就需要修改CMD的默认编码了,方法如下:

CMD窗口输入

如果返回当前CMD的编码

修改为utf-8编码的命令

现在运行python项目应该就不会乱码了。

假如还是乱码的话,那就把刚才的修改逆向改回去,再查原因吧,但是暂时我还没有发现这种情况。

 

06

Python中字典创建、遍历、添加等实用操作技巧合集

字段是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,其复杂度为O(1),速度非常快。下面列出字典的常用的用途.
一、字典中常见方法列表

二、创建字典的五种方法 Continue reading

十二 06

两个故事理解阻塞非阻塞与同步异步的区别

故事一:

“阻塞”与”非阻塞”与”同步”与“异步”不能简单的从字面理解,提供一个从分布式系统角度的回答。
1.同步与异步
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)
所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由*调用者*主动等待这个*调用*的结果。

而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。 Continue reading

十一 10

Python print输出带颜色文字信息

Python项目开发时,查看各种测试信息时,为了更加醒目的显示输出内容,那就让它色起来吧。