原来小甲鱼写的时候没有link里边有中文的连接,后边有中文的连接了,所以不行,把他那个keyword在url2哪里输一遍,把汉字编码就好了,改一下就okl了
mport urllib.request
import urllib.parse
import re
from bs4 import BeautifulSoup
def test_url(soup):
result = soup.find(text=re.compile("百度百科尚未收录词条"))
if result:
print(result[0:-1]) # 百度这个碧池在最后加了个“符号,给它去掉
return False
else:
return True
def summary(soup):
word = soup.h1.text
# 如果存在副标题,一起打印
if soup.h2:
word += soup.h2.text
# 打印标题
print(word)
# 打印简介
if soup.find(class_="lemma-summary"):
print(soup.find(class_="lemma-summary").text)
def get_urls(soup):
for each in soup.find_all(href=re.compile("view")):
content = ''.join([each.text])
print(each.text)
if '=' in each['href']:
[links,name] = each['href'].split('Name=',2)
keyname = urllib.parse.urlencode({"Name":name})
key_link = links + keyname
else:
key_link = each['href']
url2 = ''.join(["http://baike.baidu.com", key_link])
response2 = urllib.request.urlopen(url2)
html2 = response2.read()
soup2 = BeautifulSoup(html2, "html.parser")
if soup2.h2:
content = ''.join([content, soup2.h2.text])
content = ''.join([content, " -> ", url2])
yield content
def main():
word = input("请输入关键词:")
keyword = urllib.parse.urlencode({"word":word})
response = urllib.request.urlopen("https://baike.baidu.com/search/word?%s" % keyword)
html = response.read()
soup = BeautifulSoup(html, "html.parser")
if test_url(soup):
summary(soup)
print("下边打印相关链接:")
each = get_urls(soup)
while True:
try:
for i in range(10):
print(next(each))
except StopIteration:
break
command = input("输入任意字符将继续打印,q退出程序:")
if command == 'q':
break
else:
continue
if __name__ == "__main__":
main()
这是结果:
请输入关键词:tom
汤姆(美国动画片《猫和老鼠》中的主角)
汤姆(Tom)是米高梅公司制作的经典动画片《猫和老鼠》中的主角之一,70年代老动画中的著名卡通明星角色,是一只蓝灰和白色混合的英国短毛猫。他与小老鼠杰瑞(Jerry)之间可称得上是一对欢喜冤家,二者亦敌亦友,有时互相捣乱,有时互相帮助,有时争论不休,有时团结和谐。他每天忙碌于捉住同住在一起的杰瑞,但总是不如意,总在被耍,憨傻得可爱。生活中充满幽默搞笑,同时也具有抒情与伤情的一幕;主人通常都为两只鞋太太(又黑又胖的女人)。另外,他也爱慕漂亮的千金母猫图多盖洛。有时还被其他成员欺负,如斯派克(Spike)、布奇、莱特宁、托普斯等。
下边打印相关链接:
恐龙百科
恐龙百科 -> http://baike.baidu.com/wikicategory/view?categoryName=%E6%81%90%E9%BE%99%E5%A4%A7%E5%85%A8
多肉百科
多肉百科 -> http://baike.baidu.com/wikicategory/view?categoryName=%E5%A4%9A%E8%82%89%E6%A4%8D%E7%89%A9
里约残奥会吉祥物
里约残奥会吉祥物(里约残奥会吉祥物) -> http://baike.baidu.com/item/TOM/19885318#viewPageContent
名字
名字(名字) -> http://baike.baidu.com/item/TOM/2044473#viewPageContent
全面订单管理
全面订单管理(全面订单管理) -> http://baike.baidu.com/item/TOM/2044457#viewPageContent
移动互联网公司
移动互联网公司(移动互联网公司) -> http://baike.baidu.com/item/TOM/39488#viewPageContent
化学术语
化学术语(化学术语) -> http://baike.baidu.com/item/TOM/2044489#viewPageContent
同义词
同义词目录 -> http://baike.baidu.com/subview/71844/10028254.htm
我感觉小甲鱼 哪个href少了半个引号的,所以有的网址好像不太对 你自己调试把 我就不改了