|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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就不是一个正常的网页地址了
初步尝试爬虫,还有很多不懂的,希望大家耐心解答!感谢
1. 的确就两个,还有一个不是 html 所以获取不到。
2. 你说的是对的,如果 html 里 href 是
- <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
复制代码
这样子的,后面 join 之后,的确不是正确的网址了,所以可能视频里不是那么写的,而是你看错了。
|
-
|