爬虫学习03
pip了lxml包之后出现错误,未解析的引用 ‘etree’
- 从python3.5版本后不能直接lxml.etree模块了
- from lxml import html
- 用html.etree替代老etree
from lxml import html
# etree = html.etree
e = etree.HTML(response.text)
TypeError: init() takes 1 positional argument but 2 were given
- 初始是没有参数的,就如
__init__
或者只有一个self
参数,def __init__(self): ........
,之后使用的时候,初始auto = AutoEncoder()
,如果直接把类当做对象直接调用 ,out = AutoEncodeer(input)
这样的话就是给类的实例化传进来两个参数,一个是self
另一个是input
所以会报错,简单来说就是参数问题,初始参数和调用的时候的参数不一致。
使用pytesseract识别验证码中遇到的问题
使用pytesseract识别验证码中遇到异常如下:
pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH.
检查上述报错中的pytesseract.py源码,发现如下说明:
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'tesseract'
安装后的默认文件路径为(这里使用的是Windows版本):C:\Program Files (x86)\Tesseract-OCR\
PS:安装目录不同,只是改个安装目录即可
然后将源码中的:
tesseract_cmd = 'tesseract'
更改为:
tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
存在验证码登陆的时候需要使用session保证是同一次的会话
xpath中用normalize-space()去除空格或者换行 .strip()方法去掉首尾空格
- 但是normalize-space()会使数据从换行处断开,并且会变成string类型之后无法使用
.xpath('string(.)')
拼接成为string类型