我应该使用哪个CSS选择器来访问网站(python)中图形上的数字

2024-06-16 11:48:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从这页(https://www.zoopla.co.uk/local-info/?outcode=cm15&incode=9bq)上的图表中提取一些数字

图中有5个选项卡

我对第五页(报纸)感兴趣

当我运行这段代码时,我得到了关于第一个选项卡图的一些信息

但是soup.find\u all(“”,id='neights-papers')返回一个空白

from bs4 import BeautifulSoup as bs
import requests

res=requests.get('https://www.zoopla.co.uk/local-info/?outcode=cm15&incode=9bq')
soup = bs(res.content, 'lxml')

housing = [item.text.replace('\n','').strip() for item in soup.find_all('',id='local-info-neighbours')]
print(housing)

newspapers = [item.text.replace('\n','').strip() for item in soup.find_all('',id='neighbours-newspapers')]
print(newspapers)

我不知道如何访问一个id内的id,如果这是什么。有人能帮忙吗


Tags: httpsinfoidlocalwwwallfinditem
1条回答
网友
1楼 · 发布于 2024-06-16 11:48:14

您可以使用正则表达式和请求

import requests
import re
import ast

headers = {
    'Referer' : 'https://www.zoopla.co.uk/',
    'User-Agent' : 'Mozilla/5.0'
}
res = requests.get('https://www.zoopla.co.uk/widgets/local-info/neighbours-chart.html?outcode=cm15&incode=9bq&category=Newspapers', headers = headers)
data = re.search(r'categories: (\[.*])', res.text ,flags=re.DOTALL).group(1)
items = re.findall(r'(\[.*])', data)

papers = ast.literal_eval(items[0])
numbers = ast.literal_eval(items[1])
result = list(zip(papers, numbers))
print(result)

相关问题 更多 >