老师为什么我的当当网导入是有错误的呢?

来源:2-12 实现购书比价工具

qq_慕先生353548

2019-08-05

错误如下:
Traceback (most recent call last):
File
"C:/Users/HELLO/.PyCharm2018.2/config/scratches/spider_book.py", line 1, in
from .spider_dangdang import spider as dang
ModuleNotFoundError: No module named ‘main.spider_dangdang’; ‘main’ is not a package

京东和一号店的导入都没问题,淘宝因为不知道如何从网页源代码中提取出想要的数据所以还没做。
book代码:

from .spider_dangdang import spider as dangdang
from .spider_jd import spider as jd
from .spider_yhd import spider as yhd
from .spider_taobao import spider as taobao

def main(sn):
    book_list = []

    #当当网数据
    print('以下是当当')
    dangdang(sn,book_list)

    #京东网数据
    print('以下是京东')
    jd(sn,book_list)

    #一号店数据
    print('以下是一号店')
    yhd(sn,book_list)

    #淘宝网数据


    for book in book_list:
        print(book)
    print('=')*50

    #排序
    book_list = sorted(book_list,key=lambda item : item.price)
    for book in book_list:
        print(book)

if __name__ == '__main__':
    sn = input('请输入图书的ISBN编码:')
    main(sn)

以下是当当的代码

import requests
from lxml import html

def spider(sn,book_list=[]):
    url = 'http://search.dangdang.com/?key={sn}&act=input'.format(sn=sn)

    #获取html内容
    html_data = requests.get(url).text

    #获取xpath对象
    selector = html.fromstring(html_data)
    ul_list = selector.xpath('//div[@id="search_nature_rg"]/ul/li')
    #print(len(ul_list))
    #读取内容
    for li in ul_list:
        #标题
        title = li.xpath('a/@title')
        print(title[0])

        #链接
        link=li.xpath('a/@href')
        print(link[0])

        #价格
        price = li.xpath('p[@class="price"]/span[@class="search_now_price"]/text()')
        print(price[0].replace('¥',''))

        #店铺
        store = li.xpath('p[@class="search_shangjia"]/a/text()')
        store = '当当自营' if len(store)== 0 else store[0]
        print(store)
        print('-'*50)

        book_list.append({
            'title': title[0],
            'price': price[0].replace('¥', ''),
            'link': link[0],
            'store': store[0]
        })

if __name__ == '__main__':
    sn = 9787115428028
    spider(sn)
写回答

2回答

NavCat

2019-08-13

from .spider_dangdang import spider as dangdang
from .spider_jd import spider as jd
from .spider_yhd import spider as yhd
from .spider_taobao import spider as taobao

把模块前面的 . 去掉,即:

from spider_dangdang import spider as dangdang
from spider_jd import spider as jd
from spider_yhd import spider as yhd
from spider_taobao import spider as taobao

试试

0
5
qq_慕先生353548
回复
NavCat
好滴,已经解决
2019-08-19
共5条回复

NavCat

2019-08-08

你贴的代码都是一个文件的代码吗?
怎么会有两个
if __name__ == '__main__':

0
1
qq_慕先生353548
不是啊老师,一个是spider_book的代码,一个是spider_dangdang当当网的代码,我有在两个代码之间加了文字隔开。我后来发现不仅是当当网的那个代码导入不了,另外京东和一号店的也不行,都是一种错误,可能是导入有问题,我百度了很多也没找到解决办法
2019-08-08
共1条回复

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程