鱼C论坛

 找回密码
 立即注册
查看: 1468|回复: 16

[已解决]【求助】第56讲课后练习一的问题。

[复制链接]
发表于 2019-10-2 21:21:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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()
最佳答案
2019-10-4 10:16:28
1,这个网址是进入百度百科点击全站搜索的网址。
2,urlencode可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,
为什么要键要用word,是因为全站搜索的网址是这样的https://baike.baidu.com/search?word=百度百科,网址的键值对里规定了word是键,然后通过下面的urllib.request.urlopen,将网址改为传入键值对的网址,就能吻合百度百科搜索的要求了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-4 10:16:28 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +4 鱼币

1,这个网址是进入百度百科点击全站搜索的网址。
2,urlencode可以把key-value这样的键值对转换成我们想要的格式,返回的是a=1&b=2这样的字符串,
为什么要键要用word,是因为全站搜索的网址是这样的https://baike.baidu.com/search?word=百度百科,网址的键值对里规定了word是键,然后通过下面的urllib.request.urlopen,将网址改为传入键值对的网址,就能吻合百度百科搜索的要求了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 12:04:30 | 显示全部楼层

回帖奖励 +4 鱼币

本帖最后由 XiaoPaiShen 于 2019-10-5 12:29 编辑

1. 首先进入百度的search页面,再从该页面中提取含有‘view’的元素,重新组成网址查询。
2. urlencode将查询的内容编码,才可以放在url中,汉字等unicode不能直接放在url中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 14:24:15 | 显示全部楼层
弱弱的佳佳 发表于 2019-10-4 10:16
1,这个网址是进入百度百科点击全站搜索的网址。
2,urlencode可以把key-value这样的键值对转换成我们想要 ...

那如果下次我再写类似的代码,该怎么确定网址变化的规律,以及网址的键?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 15:36:46 | 显示全部楼层

回帖奖励 +4 鱼币

1. 这个网址是经过编码后的。
2. 关于 urlencode 的功能和用法可以参考 https://blog.csdn.net/weixin_43411585/article/details/88854544。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 15:40:47 | 显示全部楼层
瑁怕瑁 发表于 2019-10-4 14:24
那如果下次我再写类似的代码,该怎么确定网址变化的规律,以及网址的键?

确定爬取某个网页前,要去‘踩点’,那个时候就要观察这个键值对怎么写了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 15:56:04 | 显示全部楼层
弱弱的佳佳 发表于 2019-10-4 15:40
确定爬取某个网页前,要去‘踩点’,那个时候就要观察这个键值对怎么写了!

键值一般是在什么位置,有规律吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-4 17:50:30 | 显示全部楼层

回帖奖励 +4 鱼币

fiddler抓包                     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-4 20:53:22 | 显示全部楼层
本帖最后由 瑁怕瑁 于 2019-10-4 22:30 编辑


没学过,还有其他方法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-5 08:41:42 | 显示全部楼层
瑁怕瑁 发表于 2019-10-4 15:56
键值一般是在什么位置,有规律吗?

一般都在链接网址的?后面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-6 00:02:55 | 显示全部楼层
弱弱的佳佳 发表于 2019-10-5 08:41
一般都在链接网址的?后面

明白了!感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-6 09:45:38 From FishC Mobile | 显示全部楼层
别忘了设为最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 16:59:40 | 显示全部楼层

回帖奖励 +4 鱼币

还没看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-11 13:43:41 | 显示全部楼层

回帖奖励 +4 鱼币

请问 56课 之后的练习在哪儿,我找不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-12 23:25:49 | 显示全部楼层
龙王山下草 发表于 2019-10-11 13:43
请问 56课 之后的练习在哪儿,我找不到

我写错了,应该是55课的练习!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 16:47:53 | 显示全部楼层

回帖奖励 +4 鱼币

感谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 11:54:54 | 显示全部楼层

回帖奖励 +4 鱼币

可以参考这个学习https://www.cnblogs.com/caicaihong/p/5687522.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 00:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表