我在PyCharm中遇到了webcrawler编码问题

时间:2015-12-20 00:43:29

标签: python python-3.x pycharm

我试图使用PyCharm对网络抓取工具进行编码,但我一直遇到对我来说很奇怪的错误。

例如:

  • 我会在PyCharm控制台中键入import urlparse,但import不会突出显示橙色。
  • 输入end of statement expected后,我也会收到print urls[0]通知。

任何人都可以回答为什么我遇到了奇怪的错误而教程视频显示那个人没有任何问题地键入相同的代码?可能是因为我使用的是Python 3并且他使用的是Python 2?

  

由于stackoverflow中的链接限制,我删除了网址

以下是上述问题的代码:

import urlparse
import urllib
from bs4 import BeautifulSoup

url = ""

urls = [url] # stack of urls to scrape
visited = [url] # historic record of urls

while len(urls) >0:
    try:
        htmltext = urllib.urlopen(urls[0]).read()
    except:
        print urls[0]
    soup = BeautifulSoup(htmltext)

    urls.pop(0)

    print soup.findAll('a', href=True):

以下是我从另一个教程中复制的代码,该代码没有显示与视频相同的结果(代码运行但未在控制台中提供任何列表):

import requests
from bs4 import BeautifulSoup

def trade_spider(max_pages):
    page = 1
    while page <= max_pages:
        url = '' + str(page)
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")
        for link in soup.findAll('a', {'a': 'character.php?ID=44029'}):
            href = "" + link.get('href')
            title = link.string
            print(href)
        page += 1

def get_single_item_data(item_url):
    source_code = requests.get(item_url)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text, "character.php?ID=44029")
    for item_name in soup.findAll('a', {'class': 'character.php?ID=44029'}):
        print(item_name.string)

trade_spider(10)

控制台输出:

C:\Python34\python.exe C:/Users/Atom/PycharmProjects/youtubeTNB/main_vid25_HowToBuildWebCrawler.py

Process finished with exit code 0

1 个答案:

答案 0 :(得分:0)

  

我会将导入urlparse键入PyCharm控制台,但导入不会   突出橙色。

似乎没有在您发布的代码中使用

urlparse,PyCharm检测到它未被使用。或者可能是您没有安装urlparse模块。如果你将鼠标悬停在代码中的那一行,PyCharm会告诉你它检测到了什么。

  

输入后我也会收到声明结束预期通知:   打印网址[0]。

这是因为你使用的是Python 3而本教程使用的是Python 2.就像@TobiMarg所评论的那样,你需要在python 3中使用print作为函数。你在打印结束时有一个冒号声明不应该存在。