我尝试导入scrapy,但是导入时出现错误“无法导入scrapy” 在代码运行之前,我已经安装了scrapy pip和python,并添加了解码的Json。
# import sys
# reload(sys)
# sys.setdefaultencoding('utf8')
import json
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.exceptions import CloseSpider
from mercado.items import MercadoItem
from PIL import Image
class MercadoSpider(CrawlSpider):
name = 'mercado'
item_count = 0
allowed_domain = ['https://www.qdq.com/']
start_urls = ['https://www.qdq.com/search?location=Madrid%20%28provincia%29&query=clinicas%20dentales&ine_code=28000000000&latitude=40.4950678634&longitude=-3.7169852555&kind=P&province=Madrid&page=1']
rules = {
# Para cada item
Rule(LinkExtractor(allow = (), restrict_xpaths = ('/html/body/div[1]/div/div/div[1]/main/div/div/div/div[2]/div[3]/ul/li[8]/@href'))),
Rule(LinkExtractor(allow =(), restrict_xpaths = ('//a[@class="business-card-link"]')),
callback = 'parse_item', follow = False)
}
def parse_item(self, response):
ml_item = MercadoItem()
#info de producto
ml_item['nombre'] = response.xpath('//h1[@class="title"]/text()').extract()
ml_item['web'] = response.xpath('/html/body/div[1]/div/div/div[1]/main/div/div[1]/div[2]/div[1]/div/div[4]/a/@href').extract()
script_data = response.xpath('string(/html/head/script[3]/text()').extract()
decoded_data = json.loads(script_data)
ml_item['datos'] = decoded_data["telephone"]
ml_item['direccion'] = response.xpath('/html/body/div[1]/div/div/div[1]/main/div/div[1]/div[2]/div[1]/div/span[2]/text()').extract()
self.item_count += 1
if self.item_count > 5:
raise CloseSpider('item_exceeded')
yield ml_item
在json中是否有任何错误编码?我需要提取此脚本的信息,而且我不知道其他方式
答案 0 :(得分:0)
有时我的shell和我的IDE /编辑器使用的是不同的python版本。我建议检查用于执行代码的正确Python(或虚拟环境)中是否安装了scrapy。
答案 1 :(得分:0)
我强烈建议您使用虚拟环境,以免弄乱软件包。
安装虚拟环境
sudo pip install virtualenv
创建您的项目文件夹
mkdir myproject
cd myproject
在项目文件夹中创建虚拟环境
virtualenv -p / path / to / your / python venv
例如:virtualenv -p /usr/bin/python3.6 venv
激活虚拟环境
来源venv / bin / activate
现在,激活后继续安装所需的所有库。 前pip3安装scrapy。