【发布时间】:2019-10-23 19:47:52
【问题描述】:
制作这个 scraper 可以正确抓取数据,但问题在于将其导出到 csv。默认的- o filname.csv不会以正确的顺序粘贴数据。需要一些指导。item['name'] 应该在第一列,item['link'] 在第二列。这是代码。
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
import re
from ..items import WebscItem
class YuSpider(CrawlSpider):
name = 'yu'
allowed_domains = ['farfeshplus.com',
'wintv.live']
start_urls = ['https://www.farfeshplus.com/Video.asp?ZoneID=297']
rules = (
Rule(LinkExtractor(restrict_xpaths='//td[@class="text6"]'), callback='parse_item', follow=True),
)
def parse_item(self, response):
items = WebscItem()
for url in response.xpath('//html'):
items['name'] = url.xpath('//h1/div/text()').extract()
yield items
frames = url.xpath('//iframe[@width="750"]/@src').extract_first()
yield scrapy.Request(url=frames, callback=self.parse_frame)
def parse_frame(self, response):
items = WebscItem()
URL = response.xpath('//body/script').extract_first()
mp4 = re.compile(r"(?<=mp4:\s\[\')(.*)\'\]")
link = mp4.findall(URL)[0]
items['link'] = link
yield items
【问题讨论】:
-
这是元参数的使用发挥作用的时候。查看this answer 了解如何操作。
标签: python web-scraping scrapy