静觅小白爬虫及进阶系列学习笔记

小白爬虫第一弹之抓取妹子图

遇到问题:python2.x和python3.x有区别。
1. 编码问题,报错ASCII时要在前面加上

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

,路径中有中文字符需要把str类型的转为Unicode类型,使用.decode(‘utf-8’)
2. Print问题,python2.x版本的print没有括号,想要带括号需在所有import之前加上from __future__ import print_function

注:未按要求使用Anaconda,因为用pip也能下载安装。

小白爬虫第二弹之健壮的小爬虫

小白爬虫第三弹之去重去重

安装MongoDB到C盘。
运行发现代理不好使,保存到mongoDB后不知道怎么查看。

小白爬虫第四弹之爬虫快跑(多进程+多线程)

注意:需要先运行第二个代码块即我自己的start queue.py,把地址写进MongoDB,然后再运行多线程+多进程代码即multithreading.py,才能不一直显示“队列没有数据”。
另,MogoQueue.py的pop_title()函数内,需把return record['主题']改为return record['主题'.decode('utf-8')]才能不报错:KeyError。因为python2.7的编码问题,record['主题']的“主题”两字应转换成utf-8类型。

小白进阶之Scrapy第一篇

遇到问题ImportError: No module named items
解决:http://stackoverflow.com/questions/10570635/scrapy-importerror-no-module-named-items
个人使用了from __future__ import absolute_import这种方法。
安装一个python操作mysql的包mysql-connector-python-2.1.4
更改sql.py中的sql类的语句为

sql = 'INSERT INTO dd_name (xs_name,xs_author,category,name_id) VALUES (%(xs_name)s,%(xs_author)s,%(category)s,%(name_id)s)'

报错:ProgrammingError: 1045 (28000): Access denied for user ‘ROOT’@’localhost’ (using password: YES)
数据库操作:
用管理员身份打开Cmd
net start mysql
E:
Cd E:\mysql5.7\bin
mysql -hlocalhost -uroot -p123456
show databases;
use test

DROP TABLE IF EXISTS `dd_name`;
CREATE TABLE `dd_name` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `xs_name` varchar(255) DEFAULT NULL,
  `xs_author` varchar(255) DEFAULT NULL,
  `category` varchar(255) DEFAULT NULL,
  `name_id` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8mb4;

show tables;
注意分号!!!

第二部分的sql语句:

DROP TABLE IF EXISTS `dd_chaptername`;
CREATE TABLE `dd_chaptername` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `xs_chaptername` varchar(255) DEFAULT NULL,
  `xs_content` text,
  `id_name` int(11) DEFAULT NULL,
  `num_id` int(11) DEFAULT NULL,
  `url` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2726 DEFAULT CHARSET=gb18030;
SET FOREIGN_KEY_CHECKS=1;

报错:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 1-2: ordinal not in range(128)
在前面加上

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

报错:UnicodeDecodeError: ‘utf8’ codec can’t decode bytes in position 0-1: invalid continuation byte,尝试多种方法无果后,把所有的str(…)的字符串都用unicode(str(response.meta['chaptername']).replace('\xa0', ''), errors='ignore')
这种形式替换了。
如:
注意:原本的域名23wx.com改为了23us.com

小白进阶之Scrapy第二篇(登录篇)

没有vip卡号所以登不进去。。。

小白进阶之Scrapy第三篇(基于Scrapy-Redis的分布式以及cookies池)


注:刚发现还有一篇scrapy分布式的前篇没有看,但因为跟项目和毕设相关度不大所以以后再看吧。谢谢崔庆才老师,您的博客对我帮助太大了。

你可能感兴趣的:(scrapy,python)