|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 瑁怕瑁 于 2019-10-3 17:21 编辑
一下是小甲鱼的答案:
import urllib.request
import urllib.parse
import re
from bs4 import BeautifulSoup
def main():
keyword = input("请输入关键词:")
我的问题在下面两句,小甲鱼是从什么地方获得这个网址的?为什么跟我从网址栏获得的不一样?
还有“urlencode”的功能和用法是什么?为什么后面参数的键要用“word”,为什么“keyword”经过urlencode之后,与下面一句的网址结合就能变成想要的百科网址?
keyword = urllib.parse.urlencode({"word":keyword})
response = urllib.request.urlopen("http://baike.baidu.com/search/word?%s" % keyword)
html = response.read()
soup = BeautifulSoup(html, "html.parser")
for each in soup.find_all(href=re.compile("view")):
content = ''.join([each.text])
url2 = ''.join(["http://baike.baidu.com", each["href"]])
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])
print(content)
if __name__ == "__main__":
main()
1,这个网址是进入百度百科点击全站搜索的网址。
2,urlencode可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,
为什么要键要用word,是因为全站搜索的网址是这样的 https://baike.baidu.com/search?word=百度百科,网址的键值对里规定了word是键,然后通过下面的urllib.request.urlopen,将网址改为传入键值对的网址,就能吻合百度百科搜索的要求了
|
|