Python使用pandas如何在指定列第二行插入空单元格对齐图片与图注
Pandas 爬虫图文数据对齐解决方案
需求说明
需要对爬取的网页图片和对应图注做对齐处理:爬取的页面内多张图片中仅第一张主图(对应类名figure.article__main-hero article__main-hero-image)无图注,其余图片均配有图注,现有代码爬取到的图注列表从第二张图片开始匹配,导致图文错位,需要在第一行图注位置插入空值实现对齐。
解决方案
核心修改点为爬取完成图注、图片版权信息列表后,在列表头部插入空值,匹配第一张无图注的主图即可,修改后的完整参考代码如下:
import pandas as pd import requests import re from selenium import webdriver # 初始化浏览器 driver = webdriver.Chrome() url = 'https://www.homestolove.com.au/resort-style-home-three-birds renovations-22500' driver.get(url) # 爬取所有图片链接 url_content = requests.get(url).content.decode('utf-8') matches_img_url = re.findall(r'img .*?srcset="(.*?)"', url_content) main_image = [] cap_meta = [] credit = [] # 爬取主图信息 for j in driver.find_elements_by_css_selector('figure.article__main-hero article__main-hero-image'): main_image.append(j.text) # 爬取所有图注 for i in driver.find_elements_by_xpath('.//figcaption[@class = "content-body__inline-image-caption"]'): cap_meta.append(i.text) # 关键操作:在图注列表头部插入空值,对应第一张无图注的主图 cap_meta.insert(0, "") # 爬取所有图片版权信息 for k in driver.find_elements_by_xpath('.//span[@class = "content body__inline-image-credit"]'): credit.append(k.text) # 版权信息同样在头部插入空值对齐 credit.insert(0, "") # 统一构造DataFrame,自动补全长度不足的字段 scrapped_urls = pd.DataFrame({ "图片链接": matches_img_url, "主图标识": main_image + [None]*(len(matches_img_url)-len(main_image)), "图注": cap_meta + [None]*(len(matches_img_url)-len(cap_meta)), "版权信息": credit + [None]*(len(matches_img_url)-len(credit)) }) # 导出到CSV scrapped_urls.to_csv('scrapped_urls_test2.csv', mode='a', index=False) driver.quit()
内容的提问来源于stack exchange,提问作者riot12
相关产品推荐
相关产品推荐

