Open xm634634 opened 4 years ago
更正一下: init.py 中 'init' 前后都有下划线'_' File "" 中 ""里面包含'《frozen importlib._bootstrap》'
你可以重新创建一个项目,然后用现在的代码替换新生成的文件。
scrapy startproject weibo
cd weibo
scrapy genspider search weibo.com
用现在的文件settings.py、pipelines.py、items.py、utils、search.py替换新生成的文件
你可以重新创建一个项目,然后用现在的代码替换新生成的文件。
scrapy startproject weibo cd weibo scrapy genspider search weibo.com
用现在的文件settings.py、pipelines.py、items.py、utils、search.py替换新生成的文件
收到,谢谢! 笔记本扔在公司了,明天我试完再反馈。
另外,大大我想学习爬虫,看了《Python网络爬虫权威指南》还是感觉不知从哪下手,请问有什么推荐学习路径和方法吗。
一点建议:
1.weibo-search爬取到数据的同时,开启线程调用weibo-crawler爬取相关数据 2.爬取报错时进行异常处理重启任务
我本人对爬虫也不专业,因为很多使用者一直提需求才不断修bug、添加新功能。所以也不清楚应该学习哪些技能,不过感觉你可以自己练习写一些项目,知道书中的知识用在哪,如何用,这样记的也更牢。还有就是学习一下这方面比较流行的框架,使用框架比自己从零开始写会省很多事,性能可能也更好,暂时就想到这么多。
第一个建议是说在取到数据后,用weibo-crawler获取对应用户的微博吗?本程序的目的是获取包含关键词的微博,用户的其它微博可能与关键词无关,与本程序目的不符,这个功能应该是可选的,也可以把用户的昵称和user_id保存到文件,供使用者选择是否要获取用户微博,如果要,可以把文件传给weibo-crawler,获取用户微博; 第二个是不错的建议,程序很多地方也都做了异常处理,上面的问题因为没有遇到过,也没有复现错误,所以还不知道如何处理,不知道是否和系统有关。
再次感谢建议,两个建议都非常好,如果还有问题,欢迎继续反馈。
你可以重新创建一个项目,然后用现在的代码替换新生成的文件。
scrapy startproject weibo cd weibo scrapy genspider search weibo.com
用现在的文件settings.py、pipelines.py、items.py、utils、search.py替换新生成的文件
Error: Module 'weibo' already exists 无奈把weibo替换成weibo1 然后替换.py文件
Traceback (most recent call last):
File "/home/cream/.local/bin/scrapy", line 8, in
感觉像是生产环境不干净导致的? 能否完整删除已建立的环境,重新建立环境,只把数据复制过来,然后继续运行项目
如果只创建项目不替换文件会出错吗
如果只创建项目不替换文件会出错吗 创建名为weibo时会出错,Error: Module 'weibo' already exists
cd到其他目录后,执行scrapy startproject weibo也是一样
你应该是在原来目录的子目录执行的,这样确实会出错,删除原来的项目或者这一个完全不相关的目录(不是原来项目的子目录)创建,应该没问题
你应该是在原来目录的子目录执行的,这样确实会出错,删除原来的项目或者这一个完全不相关的目录(不是原来项目的子目录)创建,应该没问题
重做系统还是报错,不知道是不是因为3个工具都是放在/home/cream/DataABC目录的原因
Traceback (most recent call last):
File "/usr/bin/scrapy", line 8, in
换到/home/cream/目录下依然报错 scrapy crawl search -s JOBDIR=crawls/search Scrapy 2.0.1 - no active project
Unknown command: crawl
scrapy startproject weibo
Error: Module 'weibo' already exists
Unknown command: crawl可能是因为你没在项目目录下运行,比如weibo-search目录,要在项目目录下执行scrapy crawl search -s JOBDIR=crawls/search。 如果在不相关的目录(和本项目不在一个目录)下scrapy startproject weibo也无法创建成功,不知道是不是系统创建不了项目,如果这样,说明当前环境下scrapy可能有问题。
Unknown command: crawl可能是因为你没在项目目录下运行,比如weibo-search目录,要在项目目录下执行scrapy crawl search -s JOBDIR=crawls/search。 如果在不相关的目录(和本项目不在一个目录)下scrapy startproject weibo也无法创建成功,不知道是不是系统创建不了项目,如果这样,说明当前环境下scrapy可能有问题。
不是目录问题,每个目录我都试过,感觉是scrapy的问题。你用的是哪个版本的scrapy呢
scrapy用的2.0
本子扔公司了,然后把08年的笔记本翻出来重建生产环境成功了: sudo pip install scrapy sudo pip install pillow sudo pip install pymysql 按照这个顺序装没问题 下次可以试试 sudo pip install scrapy pillow pymysql tqdm(weibo-crawler需要tqdm)
之前为了方便一条命令撸完: sudo pip install lxml pillow pymysql scrapy tqdm weibo 因为weibo-crawler和weibo-follow的原因需要其他pip,然后强迫症把需要安装的pip排了序
然后在干净系统下通过 git clone https://github.com/dataabc/weibo-search.git 后安装scrapy时发现包含lxml,很有可能是在这里出的问题
感谢反馈,如果还有其它问题可以继续讨论
1.删除pip依赖 sudo pip install scrapy pillow pymysql tqdm lxml weibo 2.设置pip源 sudo pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 华为源安装scrapy时会报错,改为清华源 3.安装相关依赖 sudo pip install scrapy pillow pymysql tqdm
搞定收工
感谢,这个方法奏效,补充一下最后的代码有点小问题,思路是对的。
1.删除pip依赖(这里是uninstall 不是install,另外sudo是为系统里所有用户执行这个操作,没必要,亲测不加sudo也奏效。) pip uninstall scrapy pillow pymysql tqdm lxml weibo 2.设置pip源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 3.重新安装相关依赖 pip install scrapy pillow pymysql tqdm
运行环境: OS: Manjaro 19.0.2 Kyria Kernel: x86_64 Linux 5.4.30-1-MANJARO WM: i3 CPU: AMD A8-4500M APU with Radeon HD Graphics @ 4x 1.9GHz RAM: 2587MiB / 7401MiB
python:Python 3.8.2 (default, Feb 26 2020, 22:21:03) [GCC 9.2.1 20200130] on linux
已经安装: pip install pillow pip install scrapy pip install weibo
报错详情: Traceback (most recent call last): File "/home/cream/.local/bin/scrapy", line 8, in
sys.exit(execute())
File "/home/cream/.local/lib/python3.8/site-packages/scrapy/cmdline.py", line 113, in execute
settings = get_project_settings()
File "/home/cream/.local/lib/python3.8/site-packages/scrapy/utils/project.py", line 69, in get_project_settings
settings.setmodule(settings_module_path, priority='project')
File "/home/cream/.local/lib/python3.8/site-packages/scrapy/settings/init.py", line 287, in setmodule
module = import_module(module)
File "/usr/lib/python3.8/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1014, in _gcd_import
File "", line 991, in _find_and_load
File "", line 970, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'weibo.settings'; 'weibo' is not a package