Skip to main content

Scrapy + xpath + Beautiful Soup

Scrapy + xpath + Beautiful Soup

在使用scrapy的过程中会遇到一个问题就是类似如下的代码

<tr>
    <td>元素一</td>
    <td>元素二</td>
    <td>元素三</td>
</tr>
<tr>
    <td>元素一</td>
    <td><a href='#'>元素二</a></td>
    <td>元素三</td>
</tr>
<tr>
    <td>元素一</td>
    <td>元素二</td>
    <td>元素三</td>
</tr>

在scrapy中的xpath应该是这样的

'//tr/td[0]' 获取 元素一
'//tr/td[1]' 获取 元素二
'//tr/td[2]' 获取 元素三

但是获取完之后 我们要存到数据库的数据是一个纯文本的,不希望里里面有html标签,好吧,这个例子

里面就有这样的一个标签,怎么办?正则?如果文本里面也有这样的标签呢?考虑后发现Beautiful Soup

其实在将获取的元素存储的时候,使用Beautiful Soup进行整理一下就可以获取到了。给个实例代码

soup = BeautifulSoup(item['location'][i], "lxml")
location = soup.get_text()
location = re.sub(r'\s+','',location)
其实只要使用get_text()这个方法就可以比较完整的获取到文本数据了
版权声明

版权声明

durban.zhang 创作并维护的 Walkerfree 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。本文首发于 Walkerfree 博客(https://www.walkerfree.com/),版权所有,侵权必究。本文永久链接:https://www.walkerfree.com/article/9