如何为没有电子邮件的人抓取空字符串
How to Scrape Empty String for those with no Email
我正在尝试抓取一个包含人员及其信息(Phone、姓名、职位、电子邮件等)的网页。有些人缺少 phone 号码或电子邮件,我遇到了这个问题,因为我合并了列表,如果它不抓取字符串,索引将会不同。
这就是我抓取电子邮件的方式:
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>
有没有办法让它抓取空的电子邮件地址字段,以便我能够轻松组合字段或将字符串添加到这些空字段中?
非常感谢!
您可以简单地将提取分成两部分:
- 提取所有人物节点
- 为每个人节点提取电子邮件或为空
例如:
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
我正在尝试抓取一个包含人员及其信息(Phone、姓名、职位、电子邮件等)的网页。有些人缺少 phone 号码或电子邮件,我遇到了这个问题,因为我合并了列表,如果它不抓取字符串,索引将会不同。
这就是我抓取电子邮件的方式:
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>
有没有办法让它抓取空的电子邮件地址字段,以便我能够轻松组合字段或将字符串添加到这些空字段中?
非常感谢!
您可以简单地将提取分成两部分:
- 提取所有人物节点
- 为每个人节点提取电子邮件或为空
例如:
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