请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

错误如下:
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)

正在回答 回答被采纳积分+3

2回答

NavCat 2019-08-13 10:37:55
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 回复 有任何疑惑可以回复我~
  • 提问者 qq_慕先生353548 #1
    试过的,这样不行,在pycharm里面就直接是红线报错
    回复 有任何疑惑可以回复我~ 2019-08-14 14:58:43
  • NavCat 回复 提问者 qq_慕先生353548 #2
    pycharm里面的红线报错你要点开看看是什么错误,这只是IDE工具的静态语法检查
    回复 有任何疑惑可以回复我~ 2019-08-14 21:47:54
  • 提问者 qq_慕先生353548 回复 NavCat #3
    错误是 unresolved reference'spider_dangdang'。但是程序依然可以运行
    回复 有任何疑惑可以回复我~ 2019-08-18 10:11:30
NavCat 2019-08-08 08:25:35

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

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_慕先生353548 #1
    不是啊老师,一个是spider_book的代码,一个是spider_dangdang当当网的代码,我有在两个代码之间加了文字隔开。我后来发现不仅是当当网的那个代码导入不了,另外京东和一号店的也不行,都是一种错误,可能是导入有问题,我百度了很多也没找到解决办法
    回复 有任何疑惑可以回复我~ 2019-08-08 12:44:51
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号