鱼C论坛

 找回密码
 立即注册
查看: 859|回复: 2

[已解决]第55讲课后题

[复制链接]
发表于 2019-3-3 11:19:51 | 显示全部楼层 |阅读模式

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

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

x
import urllib.request
import re
from bs4 import BeautifulSoup

def main():
    url = "http://baike.baidu.com/view/284853.htm"
    response = urllib.request.urlopen(url)
    html = response.read()
    soup = BeautifulSoup(html, "html.parser") # 使用 Python 默认的解析器
   
    for each in soup.find_all(href=re.compile("view")):
        print(each.text, "->", ''.join(["http://baike.baidu.com", each["href"]]))
        # 上边用 join() 不用 + 直接拼接,是因为 join() 被证明执行效率要高很多

if __name__ == "__main__":
    main()


首先这是小甲鱼的代码,我有两个问题:
1、但是显示的内容却跟答案不一样?这是为什么,目的是去搜索包含“view”的链接,难道是在那个网页中含有“view”的连接就是这些么?网页改版了?还是我哪里做错了
2、关于“href”这里我也不是很懂,首先“爱丽丝梦游仙境”那篇教程里面有这样的例子:

soup.find_all(href=re.compile("elsie"))
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]

然后在我们的原答案中:
print(each.text, "->", ''.join(["http://baike.baidu.com", each["href"]]))
针对字典取值each["href"]得到是:"http://example.com/elsie"
然后join后''.join后不就变成了http://example.com/elsiehttp://example.com/elsie(这里用爱丽丝中href代替)
就是我觉得当href的内容被提取出后在join就不是一个正常的网页地址了

初步尝试爬虫,还有很多不懂的,希望大家耐心解答!感谢
最佳答案
2019-3-3 15:02:33
1. 的确就两个,还有一个不是 html 所以获取不到。
2. 你说的是对的,如果 html 里 href 是
  1. <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
复制代码

这样子的,后面 join 之后,的确不是正确的网址了,所以可能视频里不是那么写的,而是你看错了。
微信截图_20190303110845.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-3-3 15:02:33 | 显示全部楼层    本楼为最佳答案   
1. 的确就两个,还有一个不是 html 所以获取不到。
2. 你说的是对的,如果 html 里 href 是
  1. <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
复制代码

这样子的,后面 join 之后,的确不是正确的网址了,所以可能视频里不是那么写的,而是你看错了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-3 16:48:25 | 显示全部楼层
°蓝鲤歌蓝 发表于 2019-3-3 15:02
1. 的确就两个,还有一个不是 html 所以获取不到。
2. 你说的是对的,如果 html 里 href 是

感谢解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-13 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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