我试图使用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
答案 0 :(得分:0)
似乎没有在您发布的代码中使用我会将导入urlparse键入PyCharm控制台,但导入不会 突出橙色。
urlparse
,PyCharm检测到它未被使用。或者可能是您没有安装urlparse
模块。如果你将鼠标悬停在代码中的那一行,PyCharm会告诉你它检测到了什么。
输入后我也会收到声明结束预期通知: 打印网址[0]。
这是因为你使用的是Python 3而本教程使用的是Python 2.就像@TobiMarg所评论的那样,你需要在python 3中使用print
作为函数。你在打印结束时有一个冒号声明不应该存在。