【发布时间】:2015-08-09 05:56:49
【问题描述】:
我目前正在尝试在 python 中编写一个小 scraper 来构建一个 worlist,使用 wikipedia 随机 url 搜索具有不同单词的大多数页面,我实际上遇到了一个问题,使其忽略空<p></p> 标记并让函数在抛出初始循环后再次查询 url。
对不起,糟糕的代码,但我对编程和 python 非常陌生,而且我是自学成才的,所以对最终的掌声时刻感到抱歉。 :P
这里是代码。
import requests
from bs4 import BeautifulSoup
def wiki_spider():
value = 1
wordlist = open("wordlist.txt","w")
url = "https://en.wikipedia.org/wiki/Special:Random"
while value == 1:
sourcepage = requests.get(url)
plaintext = sourcepage.text
soup = BeautifulSoup(plaintext)
for words in soup.findAll('p'):
word = words.string
##if word == "\n":
##wordlist.write("")
##wordlist.write(word)
print(word)
start()
def start():
wiki_spider()
start()
感谢您的所有输入。
【问题讨论】:
-
我看到了一个 while 循环,然后我看到 start 调用 wiki_spider,而后者又调用 start 进入遗忘状态。其背后的想法/意图是什么?
-
我试图让函数 wiki_spider() 在它完成抛出页面时再次回调到 start()。但这种方法显然行不通。
-
是的,我明白你在做什么,并且让方法在这样的无限循环中相互调用可能不是最好的主意,因为可能没有停止循环的好方法。这就是
while/for(本机)循环方法的用途。 -
所以为了确保我理解你的问题,看来这是你需要回答的两个问题:1)如何在循环中进行查询,2)如何忽略空的
<p>标签。是这样吗? -
好的,感谢您的意见。那么html
标签呢,它们在终端上显示为 None ,因此无法添加到任何文件中,因为它只是崩溃了。我怎么能让它忽略空标签?
标签: python python-2.7 beautifulsoup web-crawler