python - BeautifulSoup 没有找到 xml 标签,我该如何解决这个问题?
问题描述
尝试使用 beautifulsoup 抓取 shopify 网站,使用findAll('url')
返回一个空列表。如何检索所需的内容?
import requests
from bs4 import BeautifulSoup as soupify
import lxml
webSite = requests.get('https://launch.toytokyo.com/sitemap_pages_1.xml')
pageSource = webSite.text
webSite.close()
pageSource = soupify(pageSource, "xml")
print(pageSource.findAll('url'))
我试图抓取的页面:https ://launch.toytokyo.com/sitemap_pages_1.xml
我得到的是:一个空列表
我应该得到什么:不是一个空列表
感谢大家的帮助,在我的代码中发现了问题,我使用的是旧版本的 findAll 而不是 find_all
解决方案
你可以做:
import requests
from bs4 import BeautifulSoup as bs
url = 'https://launch.toytokyo.com/sitemap_pages_1.xml'
soup = bs(requests.get(url).content,'html.parser')
urls = [i.text for i in soup.find_all('loc')]
所以基本上我得到内容并找到包含 url 的 loc 标记,然后我抓取内容;)
更新:需要 url 标签并生成字典
urls = [i for i in soup.find_all('url')]
s = [[{k.name:k.text} for k in urls[i] if not isinstance(k,str)] for i,_ in enumerate(urls)]
使用 from pprint import pprint as print 得到漂亮的 s 打印:
print(s)
注意:您可以使用 lxml 解析器,因为它比 html.parser 更快
推荐阅读
- python - 为什么这些 Python Matplotlib 图在不同的计算机上显示不同?
- curl - 将“curl -X POST http://something”转换为 pycurl 等价物
- c# - 在 TextBlock.Text 对象中的另一个下方附加一个文本
- angular - ngrx 是否在单独的浏览器选项卡中保持单独的状态?
- python - 计算子组加权比例的有效方法?
- regex - 如何将可选字符串组合在一起
- angular - ng2-Chart 不适用于新创建的 Angular 10 项目
- cmake - 如何在 CMake 中生成干净(准备发布)的构建?
- python - AWS 中实例的元数据并提供 json 格式的输出
- f# - F#将比较添加到从元组列表中提取元素的递归函数