【发布时间】:2016-05-30 03:28:41
【问题描述】:
这是一个简单的 sn-p 来抓取维基百科网站并分别打印其每个内容,例如在单独的变量中转换和在单独的变量中生成等等.. 在第一个名为“bodyContent”的 div 中,还有一个名为“mw-content-text”的 div,这里我的问题是检索标签“h2”之前第一段的数据,我有一个代码 sn-p 来解决这并且无法从 BeautifulSoup 标记从字符串转换,错误是 TypeError: unsupported operand type(s) for +: 'Tag' and 'str'
import urllib
from bs4 import BeautifulSoup
url ="https://en.wikipedia.org/wiki/Deadpool_(film)"
htmlfile = urllib.urlopen(url)
htmltext = htmlfile.read()
soup = BeautifulSoup(htmltext,"lxml")
#print soup.prettify()
movie_title = soup.find('h1',{'id':'firstHeading'})
print movie_title.text
movie_info = soup.find_all('p')
#print movie_info[0].text
#print movie_info[1].text
'''I dont want like this because we dont know how many
intro paragraphs will be so we have to scrape all paras just before that h2 tag'''
这里问题出现了,我想迭代并添加 .next_sibling 并创建一个 try-exception 块来查找
"resultant_next_url.name == 'p'"
def findNextSibling(base_url):
tag_addition = 'next_sibling'
next_url = base_url+'.'+tag_addition
return next_url
最后还是这样做
base_url = movie_info[0]
resultant_url = findNextSibling(base_url)
print resultant_url.text
【问题讨论】:
-
为什么要给标签加字符串?
-
我不想我只想像这个movie_info[0]一样循环,每次都附加.next_sibling并在其中打印文本直到出现h2标签
-
你的意思是
return base_url.next_sibling?或者你只想要resultant_url = base_url.next_sibling? -
Yaa 返回 base_url.next_sibling 但是当我们再次调用它时它应该返回movie_info[0].next_sibling.next_sibling
标签: python python-2.7 python-3.x beautifulsoup urllib2