如何解决网络抓取时,我们在哪里放置“ html.parser”参数?
查看以下代码段
import requests
from bs4 import BeautifulSoup
url = #Insert url here
# Method 1
html = requests.get(url,"html.parser")
soup = BeautifulSoup( html.text )
#Method 2
html2 = requests.get(url)
soup2 = BeautifulSoup( html.text,"html.parser")
哪种方法正确?方法1或方法2?我们应该将“ html.parser”放入requests.get()还是BeautifulSoup()吗?
解决方法
解析器不是HTTP请求的一部分。
这是一种分析不同类型文档的方法。因此,在使用BeautifulSoup解析html文档的过程中,您必须提到解析器
所以,方法2是正确的。
BeautifulSoup构造函数的DocString
:param标记:一个字符串或类似文件的对象,表示 标记进行解析。
,:参数功能:要使用的解析器的所需功能。这个 可以是特定解析器的名称(“ lxml”,“ lxml-xml”, “ html.parser”或“ html5lib”),也可能是标记的类型 使用(“ html”,“ html5”,“ xml”)。建议你 命名一个特定的解析器,以便Beautiful Soup为您提供 在平台和虚拟环境中都可获得相同的结果。
如果我理解正确,则您的方法2是正确的,并且您希望将其放在BeautifulSoup构造函数中,因为
- 请求与Beautiful Soup是分开的,我不相信将html.parser放在构造函数上会做什么
- 您想为Beautiful Soup指定解析器,因为它可能解析的不是html之类的内容,例如lxml的XML解析器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。