如何为那些没有电子邮件的人抓取空字符串



我正在尝试抓取一个包含人员及其信息(电话,姓名,职位,电子邮件等)的网页。 有些人缺少电话号码或电子邮件,我遇到了麻烦,因为我合并了列表,如果它没有抓取字符串,索引会有所不同。

这就是我抓取电子邮件的方式:

response.xpath('//ul//div[@class="contact-text contact-email ctaType-email"]/a/@title').extract()

我收到来自带有此 HTML 代码的人的电子邮件:

<div class="contact-text contact-email ctaType-email">
    <a itemprop="email" href="mailto:test@gmail.com" alt=
  "test@gmail.com" title="test@gmail.com">test@gmail.com</a>                                            
</div>

但是,它完全跳过了使用此HTML代码的人并弄乱了我的列表索引。

<div class="contact-text contact-email ctaType-email">
</div>

有没有办法让它抓取空的电子邮件地址字段,以便我能够轻松地组合字段或将字符串添加到这些空字段中?

多谢!

您可以简单地将提取分为两部分:

  1. 提取所有人员节点
  2. 对于每个人节点提取电子邮件或空

例如:

people = response.xpath('//ul//div[@class="contact-text contact-email ctaType-email"]')
emails = [p.xpath('a/@title').extract() or '' for p in people]

避免此类问题的常用方法是提取项节点,然后循环访问它们:

people = response.xpath('//ul//div[@class="contact-text contact-email ctaType-email"]')
for person in people:
    item = dict()
    item['email'] = person.xpath('a/@title').extract()
    item['something_else'] = person.xpath('...')
    # ...
    yield item

最新更新