作为python开发,使用scrapy框架,找到class='pai-item pai-status-doing'的<li>标记内的<p>里的文字内容为estate_name; <em class='pai-xmpp-current-price‘>的文字内容作为price,提取的内容输出到csv里
时间: 2024-03-04 14:49:33 浏览: 146
基于Python的scrapy的使用
好的,你想问如何使用 Scrapy 框架找到 class='pai-item pai-status-doing' 的 `<li>` 标记内的 `<p>` 里的文字内容为 estate_name;`<em class='pai-xmpp-current-price'>` 的文字内容作为 price,然后将提取的内容输出到 CSV 文件中,对吧?
以下是实现这个功能的示例代码:
```python
import scrapy
import csv
class MySpider(scrapy.Spider):
name = 'my_spider'
start_urls = ['http://example.com']
def parse(self, response):
# 找到 class='pai-item pai-status-doing' 的 <li> 标记
for li in response.css('li.pai-item.pai-status-doing'):
# 提取 estate_name 和 price
estate_name = li.css('p::text').extract_first()
price = li.css('em.pai-xmpp-current-price::text').extract_first()
# 将提取的内容输出到 CSV 文件中
with open('data.csv', 'a', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerow([estate_name, price])
```
在这个示例中,我们首先使用 CSS 选择器找到 class='pai-item pai-status-doing' 的 `<li>` 标记。然后,我们使用 CSS 选择器提取 `<p>` 标记里的 estate_name 和 `<em>` 标记里的 price。最后,我们将 estate_name 和 price 写入 CSV 文件中。
注意,我们在打开 CSV 文件时使用了 `'a'` 模式,表示以追加模式打开文件。这样做可以保证每次运行 Spider 时,新提取的内容会被写入到 CSV 文件的末尾,而不是覆盖原有的内容。
另外,我们还指定了 CSV 文件的编码为 `'utf-8'`,并设置 `newline=''` 参数来避免写入 CSV 文件时产生空行。
阅读全文