daobalong
daobalong
2021-03-27 16:46
采纳率: 70%
浏览 182

python爬虫 如何取出定位标签下的所有子集文本

如图,想要爬取网页这一部分字符串,并且按键值对的格式存下来,我的代码只能取到每个键值对value的第一个元素,比如Materials这里,只能取到Matel, 后面的几个都拿不到,代码如下 

from typing import Text
from bs4 import BeautifulSoup
import requests
from PIL import Image
import piexif
import lxml
from lxml import etree
 
 
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
    'Accept-Language':'zh-CN'
}
 
 
page_respond = requests.get(url = 'https://www.gooood.cn/huahui-engineering-design-and-technological-innovation-center-china-by-huahui-group-we-studio.htm',headers = headers)
page_Soup = BeautifulSoup(page_respond .content, 'lxml')




page_spec_label = page_Soup.findAll('span', class_= 'label-text')
page_spec_data = page_Soup.findAll('div', class_= 'spec-data')

 
key_word = []
value_word = []
 
for i in page_spec_label:
    # print(i.string)
    key_word.append(i.string)
 
for j in page_spec_data:
    for k in j.a:
        # print(k.string)
        value_word.append(k.string)
 

 
dict_word = dict(zip(key_word,value_word))
print(dict_word)
 

结果如下(由于在headers里把语言定成了中文,可能跟网页有时候显示的不一样)

{'设计公司': '华汇集团|伍维设计工作室', '位置': ' 中国 ', '类型': ' 建筑 ', '材料': ' 金属 ', '标签': ' 浙江 ', '分类': ' 办公建筑 '}

材料后面的值应该有4个,分类应该有2个,请问改如何抓取才能拿到呢 

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • funny123
    coagenth 2021-03-27 17:15
    已采纳

    将原代码中这段内容:

    for j in page_spec_data:
        for k in j.a:
            # print(k.string)
            value_word.append(k.string)

    改成如下即可:

    
    for j in page_spec_data:
        s = j.find_all('a')
        if len(s)>1:
            l=';'.join([x.string for x in s])
        elif len(s)==1:
            l=s[0].string
        else:
            l=''
        value_word.append(l)
    
    点赞 1 评论

相关推荐