python 爬虫4 一些编程注意项目

来源:互联网 发布:postman ubuntu 编辑:程序博客网 时间:2024/06/05 05:40

现在大家很多都用iphone 手机,iphone 手机的emoji表情虽然是utf8 格式的,但是是4字节长度的,但是mysql utf8 编码集是三字节的

所以存入的时候会有问题。

utf8mb4作为utf8的超集,也是向下兼容utf8的,所以不用担心字符的兼容性问题。
但是切换后生效,需要重新启动mysql服务端,对业务库会存在一定的影响。(官方文档介绍说是动态修改配置,本人没有测试过,但是参考发部分的文档,都是需要重启才会生效。)
升级后,重跑了一轮mysql相关插件的测试集,无任何异常。可以证明升级后datax mysql插件的兼容性是没有影响的。

检查mysql版本。如果版本低于5.5.3,请先升级mysql server。
修改 /etc/my.cnf
 [client]
 default-character-set = utf8mb4
 [mysql]
default-character-set = utf8mb4
 [mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

重启

sudo /etc/init.d/mysql restart


查看结果:

检查字符集
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

(在workbench这样的软件里是看不到这样的结果的,要在命令行里看,因为软件里又以他默认的方式展现,忽略软件里不一样的地方)

必须保证charactersetclient/charactersetconnection/charactersetdatabase/charactersetresults/charactersetserver为utf8mb4。

或者

mysql> SET names utf8;(但这个好像是临时修改)


还有python程序里数据库连接初始化的时候就不能加charset了,采用默认charset就好

self.conn=MySQLdb.Connect(host='127.0.0.1',user='root',passwd='hhhhhhh')


python的    try except finally   和我们常用的java 的try catch finally 是不一样的

python 如果用到了库,很大可能在except的时候就已经会把数据库连接关闭,根本轮不到finally 的语句里的关闭连接语句,连接对象就已经关闭了。

所以要把关闭语句conn.close()放到try 里头,这样只要不出错,肯定会执行。出错也交给的except 会直接执行


选出所有不被标签框住的文字:

#拿到没有标签框住的文字,在beautifulsoup里也被当作一种特殊的string标签
#remark=contentcut3.next_sibling.strip()

search 方法返回的是第一个匹配上的标签

但是如果要采用遍历标签的方式,就用finditer 方法

拿到的还是beautifulsoup类型。


split 函数是要在utf8 上执行的,就是一的那个要是str(xxxx)这样的字符串类型

但是find 函数 在 unicode 和utf8 上都可以执行,但是前后类型一定要一致就行。



0 0
原创粉丝点击