今天我自学了scrapy框架,scrapy框架是Python爬虫的一种,我们可以通过
pip install scrapy
来安装它。再用
scrapy startproject 项目名
来创建一个项目文件,在创建的文件中有一个与文件同名的文件和一个scrapy.cfg文件,其中scrapy.cfg为项目得配置文件
在同名文件下有一个spiders文件,它用来装实现爬虫的代码,同名文件下还有items.py、middlewares.py、pipelines.py和settings.py四个文件。其中
item.py是项目的目标文件
middlewares.py是中间键文件(不懂,我还没学)
pipelines.py是管道文件,用来保存爬取到的信息
settings.py文件是项目的设置文件
好了,步入正题,今天我在调试程序 的时候突然报错:
Traceback (most recent call last):
File "c:\python36\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\python36\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Python36\Scripts\scrapy.exe\__main__.py", line 9, in
File "c:\python36\lib\site-packages\scrapy\cmdline.py", line 110, in execute
settings = get_project_settings()
File "c:\python36\lib\site-packages\scrapy\utils\project.py", line 63, in get_project_settings
init_env(project)
File "c:\python36\lib\site-packages\scrapy\utils\conf.py", line 84, in init_env
cfg = get_config()
File "c:\python36\lib\site-packages\scrapy\utils\conf.py", line 98, in get_config
cfg.read(sources)
File "c:\python36\lib\configparser.py", line 697, in read
self._read(fp, filename)
File "c:\python36\lib\configparser.py", line 1015, in _read
for lineno, line in enumerate(fp, start=1):
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 175: illegal multibyte sequence
我找了好多解决的方法都不是对应我的问题的,我就在想,刚才我都做了什么不该干的事情,于是我想到了,gbk是支持中文编码,我因为英语不好所以刚才在scrapy.cfg文件里加入了中文注解:
# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.io/en/latest/deploy.html
#项目的配置文件
[settings]
default = ITcase.settings
[deploy]
#url = http://localhost:6800/
project = ITcase
于是,我删除掉了中文注解,于是好用了。我感觉只有我会犯这么愚蠢的问题,但是我希望能把它分享出来。
还有就是我第一次运行的时候爬取不到网页源码,之后改了一处错误:
第一处是:settings.py下的ROBOTSTXT_OBEY要置为False,不然又的网站设置不允许爬取你的爬虫就真的不会去爬了,默认是置为True的(就行学校厕所里的禁止吸烟的牌子)
ROBOTSTXT_OBEY = False
本人第一次编写技术博客,是一个技术小白,如果那里说的有错误,希望大家能够提醒我,感谢感谢。