记录踩过的坑-scrapy

目录

import  win32 api- Import Error DLL load failed-%1 不是有效的 Win32 应用程序

ImportError No module named '_cffi_backend'

KeyError 'Spider not found ItcastItem'

No module named 'win32api'

write() argument must be str, not bytes

设置cl环境变量


import  win32 api- Import Error DLL load failed-%1 不是有效的 Win32 应用程序

系统位数问题,之前安装的是64位 win32 api。

安装32位win32 api即可。

 

ImportError No module named '_cffi_backend'

Cffi中由文件会被360认为是病毒而删掉。

方案

pip3 uninstall cffi

pip3 install cffi

然后在360弹窗说由病毒时找回文件,或者关掉360。

 

KeyError 'Spider not found ItcastItem'

Cmd执行

scrapy crawl ItcastItem

报错

KeyError: 'Spider not found: ItcastItem'

环境

Spider所在文件的文件名:ItcastItem

Spider的name:itcast

注意:scrapy crawl后面跟的是spider的name,而不是文件名。

 

No module named 'win32api'

原因是缺少win32,到 http://sourceforge.net/projects/pywin32/files/

找到对应的版本进行下载,直接安装即可

Python是没有自带访问windows系统API的库的,需要下载。库的名称叫pywin32,可以从网上直接下载。

以下链接地址可以下载:https://github.com/mhammond/pywin32/releases   (下载适合你的Python版本)

运行以下代码如果出现ImportError: No module named win32api 或者出现 ImportError: No module named win32con,说明你的库没有安装好。

介绍这个库里面最重要的两个模块:win32api和win32con。win32api顾名思义,就是用python对win32的本地api进行了封装;win32con个人理解为win32constant,即win32的常量定义。

有了以上这两个模块我们就可以来一个win32版本的Python Helloworld了。

  1. 1. import win32api  
  2. 2. import win32con  
  3. 3. win32api.MessageBox(win32con.NULL, 'Python 你好!', '你好', win32con.MB_OK)  

运行一下,看到消息框。

 

write() argument must be str, not bytes

ERROR: Spider error processing <GET http://www.itcast.cn/channel/teacher.shtml> (referer: None)

Traceback (most recent call last):

  File "c:\users\cyang\appdata\local\programs\python\python37-32\lib\site-packages\twisted\internet\defer.py", line 654, in _runCallbacks

    current.result = callback(current.result, *args, **kw)

  File "D:\workspace\mySpider\mySpider\spiders\itcast.py", line 10, in parse

    open(filename, 'w').write(response.body)

TypeError: write() argument must be str, not bytes

写文件时要用字符串,但从网页爬取的数据是字节,所以要把

open(filename, 'w').write(response.body)

改为

open(filename, 'wb').write(response.body)

即用字节的形式打开文件。

 

设置cl环境变量

前提:安装了Visual Studio C++相关的组件。

 

1. 在环境变量中Path 那一项中添加两个路径:E:\VS2017\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86

E:\VS2017\Common7\IDE

 

2. 在环境变量中新建一个LIB 变量,并添加三个路径(记得加分号):

E:\VS2017\VC\Tools\MSVC\14.10.25017\lib\x86; C:\Program Files (x86)\Windows Kits\10\Lib\10.0.14393.0\ucrt\x86;

 

3. 在环境变量中新建一个INCLUDE 变量,并添加两个路径(记得加分号):

E:\VS2017\VC\Tools\MSVC\14.10.25017\include; C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt;

 

4. 在E:\VS2017\VC\Auxiliary\Build 这个路径中点击vcvarall.bat 这个批处理程序。之后打开命令行,输入cl,如果出现下图,则配置成功……

实际路径根据自己的安装路径有所不同。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里是一个简单的Python-Scrapy爬取百度搜索结果并对搜索结果进行分析的例子: 首先,我们需要安装Scrapy和lxml库。在命令行中输入以下命令: ``` pip install scrapy pip install lxml ``` 然后,我们可以创建一个名为baidu_spider的新项目,并在项目中创建一个名为baidu的新爬虫。在命令行中输入以下命令: ``` scrapy startproject baidu_spider cd baidu_spider scrapy genspider baidu www.baidu.com ``` 现在,我们在baidu_spider/spiders/baidu.py文件中编写我们的代码。我们将使用Scrapy的Selector来选择我们想要的数据。代码如下: ```python import scrapy class BaiduSpider(scrapy.Spider): name = "baidu" allowed_domains = ["www.baidu.com"] start_urls = ["http://www.baidu.com/s?wd=python"] def parse(self, response): # 获取搜索结果 results = response.xpath('//div[@class="result c-container "]') for result in results: # 获取标题和链接 title = result.xpath('.//h3/a/text()').extract_first().strip() link = result.xpath('.//h3/a/@href').extract_first() # 获取摘要 abstract = result.xpath('.//div[@class="c-abstract"]//text()').extract() abstract = "".join(abstract).strip() # 打印结果 print(title) print(link) print(abstract) ``` 在这个例子中,我们首先定义了我们的爬虫的名称,允许的域名和起始URL。然后我们定义了一个parse函数来处理响应。在parse函数中,我们使用XPath选择器来选择搜索结果。我们使用extract_first()和extract()方法来提取标题、链接和摘要。最后,我们打印了结果。 现在,我们可以在baidu_spider目录中运行以下命令来运行我们的爬虫: ``` scrapy crawl baidu ``` 这将启动我们的爬虫并开始爬取百度搜索结果。在控制台中,您应该能够看到我们的爬虫正在输出搜索结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值