python-3.x 合并多个BeautifulSoup调用

cnh2zyt3  于 2023-02-10  发布在  Python
关注(0)|答案(1)|浏览(148)

我想遍历一个网页。我使用soup来查找/选择html中的标签。现在,我有两个单独的语句。但是我想在一个语句中完成它,这样我就不必在同一个页面上迭代两次。我的代码如下:

headers = ({'User-Agent':
        'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})

sapo="https://casa.sapo.pt/comprar-apartamentos/ofertas-recentes/distrito.lisboa/?pn=1"
soup = BeautifulSoup(response.text, 'html.parser')

data1 = [json.loads(x.string) for x in soup.find_all("script", type="application/ld+json")]
data2= soup.select('div.property')
del  data1[:2]

页面上有25个属性。data 1返回27个结果,而前两个结果只是开销,所以我删除了它们。所以我有25个结果,10个“列”。现在我想让data 2作为第11列。
我怎样才能做到这一点?

puruo6ea

puruo6ea1#

我不知道你为什么喜欢得到整个HTML元素,但是我们开始吧。改变你选择元素的策略,从容器开始:

data = []

for e in soup.select('div.property'):
    d = {'html':e}
    d.update(json.loads(e.script.string))
    data.append(d)

pd.DataFrame(data)

编辑

根据您的评论提取href via
x一个一个一个一个x一个一个二个x

相关问题