如何解决scrapy.clawer上的错误

3mpgtkmj  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(107)

现在,我用django和scrapy开发了一个有英语单词搜索功能的网页应用程序,当我在django上用表格输入单词时,scrapy会从网络词典中获取翻译成日语的单词的意思。
输入单词后,激活scrapy并停止runserver,出现以下错误:
第一个
我可以用命令kill来停止它,但是每次出错都不方便输入命令。所以我想知道如何解决它,比如添加代码等等。
下面是我代码
第一个
django项目是在scrappy项目。

u1ehiz5o

u1ehiz5o1#

启动整个TwistedReact器、线程池以及请求中包含的CrawlerProcess的所有内容并不是一个好主意。
您根本不需要Scrapy来解析单个页面;请改用requestsbs4(美丽的汤)。

import requests
import bs4

def get_word(query: str) -> str:
    resp = requests.get(f'https://ejje.weblio.jp/content/{query}', headers={
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
    })
    resp.raise_for_status()
    soup = bs4.BeautifulSoup(resp.text, 'html.parser')
    return soup.find(class_='content-explanation').get_text(strip=True)

print(get_word("cat"))

打印出

猫、ネコ科の動物、陰口をきく女、意地悪女、ジャズ狂、男、やつ

因此将其插入到您的视图中(并将其简化一点):

def add_venue(request):
    submitted = ('submitted' in request.GET)
    if request.method == 'POST':
        form = VenueForm(request.POST)
        if form.is_valid():
            word = form.cleaned_data['word']
            if not Newword.objects.filter(word=word).exists():
                explanation = get_word(word)
                # (do something with `explanation` probably?)
                form.save()
            return HttpResponseRedirect('/list/')
    else:
        form = VenueForm()
    return render(request, 'form.html', {'form': form, 'submitted': submitted})

相关问题