Python 刮削时如何消除某些元素?

Python 刮削时如何消除某些元素?,python,xpath,web-scraping,scrapy,Python,Xpath,Web Scraping,Scrapy,因此,我不知道如何在这里进行。我有一个我正试图抓取的页面示例: 现在我使用xpath选择'article'div类,然后选择后续的,我可以始终删除第一个,因为它是相同的股票新闻文本(city、yonhapnews、reporter等),我正在评估单词密度,因此这可能是我的一个问题:( 这一期在文章的结尾。如果你看文章的结尾,有一个记者的电子邮件地址和发表的日期和时间 问题是,在这个网站的不同页面上,末尾有不同数量的标签,所以我不能只删除最后两个,因为它有时仍然会影响我的结果 您将如何在最后消除

因此,我不知道如何在这里进行。我有一个我正试图抓取的页面示例:

现在我使用xpath选择'article'div类,然后选择后续的
,我可以始终删除第一个,因为它是相同的股票新闻文本(city、yonhapnews、reporter等),我正在评估单词密度,因此这可能是我的一个问题:(

这一期在文章的结尾。如果你看文章的结尾,有一个记者的电子邮件地址和发表的日期和时间

问题是,在这个网站的不同页面上,末尾有不同数量的
标签,所以我不能只删除最后两个,因为它有时仍然会影响我的结果

您将如何在最后消除那些特定的
元素?我是否需要在之后尝试清理数据

下面是选择路径并删除前两个路径的代码段。我应该如何更改它

# gets all the text from the listed div and then applies the regex to find all word objects in hanul range
hangul_syllables = response.xpath('//*[@class="article"]/p//text()').re(ur'[\uac00-\ud7af]+')

# For yonhapnews the first and the last two <p>'s are useless, everything else should be good
hangul_syllables = hangul_syllables[1:-2]
#从列出的div中获取所有文本,然后应用正则表达式查找hanul范围内的所有word对象
韩语音节=response.xpath('//*[@class=“article”]/p//text()').re(ur'[\uac00-\ud7af]+'))
#对联合通讯社来说,前两条和后两条都是无用的,其他一切都应该是好的
韩国语音节=韩国语音节[1:-2]

您可以调整XPath表达式,使其不包含带有
class=“adrs”
(发布日期)的
p
标记:


除了alecxe的答案之外,您还可以使用检查电子邮件地址的东西(可能被空格包围)排除包含电子邮件地址的
p
。如何做取决于您是使用XPath 2.0还是仅使用1.0。在2.0中,您可以执行以下操作:

//*[@class="article"]/p[not(contains(@class, "adrs")
       or text()[matches(normalize-space(.),
                   "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", "i")])]//text()

调整正则表达式以获得来自的电子邮件地址。如果愿意,您可以将
\.[A-Z]{2,4}
更改为
\.kr

啊,谢谢您的提示。我已经让正则表达式过滤掉了所有非韩语字符的内容,因此应该删除电子邮件地址
//*[@class="article"]/p[not(contains(@class, "adrs")
       or text()[matches(normalize-space(.),
                   "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$", "i")])]//text()