Scrapy 数据存储在具有动态文件名的 csv 文件中
Scrapy Data Storing in csv files with dynamic file names
我正在尝试从不同的 url 抓取数据,我想将数据保存在 csv 文件中,文件名作为抓取的 url.
的顶级域
例如,如果我从 https://www.example.com/event/abc
抓取数据,那么保存的文件名应该是 example.com
。数据正在以正确的方式抓取,但我没有成功地用正确的文件名保存文件
代码
class myCrawler(CrawlSpider):
name = 'testing'
rotate_user_agent = True
base_url=''
start_urls = []
allowed_domains = ''
handle_httpstatus_list = [404,403]
custom_settings = {
# in order to reduce the risk of getting blocked
'DOWNLOADER_MIDDLEWARES': {'sitescrapper.sitescrapper.middlewares.RotateUserAgentMiddleware': 400,
'sitescrapper.sitescrapper.middlewares.ProjectDownloaderMiddleware': 543, },
'COOKIES_ENABLED': False,
'CONCURRENT_REQUESTS': 6,
'DOWNLOAD_DELAY': 2,
'DEPTH_LIMIT' : 1,
'CELERYD_MAX_TASKS_PER_CHILD' : 1,
# Duplicates pipeline
'ITEM_PIPELINES': {'sitescrapper.sitescrapper.pipelines.DuplicatesPipeline': 300},
# In order to create a CSV file:
'FEEDS': {'%(allowed_domains).csv': {'format': 'csv'}},
}
def __init__(self, category='', **kwargs):
self.base_url = category
self.allowed_domains = ['.'.join(urlparse(self.base_url).netloc.split('.')[-2:])]
self.start_urls.append(self.base_url)
print(f"Base url is {self.base_url} and allowed domain is {self.allowed_domains}")
self.rules = (
Rule(
LinkExtractor(allow_domains=self.allowed_domains),
process_links=process_links,
callback='parse_item',
follow=True
),
)
super().__init__(**kwargs)
提前致谢
如果您在 url ?
上使用 split("\") 函数
我们可以使用
指定下载位置和动态设置文件名
'FEEDS': {"./scraped_urls/%(file_name)s" : {"format": "csv"}},
在custom_settings
我正在尝试从不同的 url 抓取数据,我想将数据保存在 csv 文件中,文件名作为抓取的 url.
的顶级域例如,如果我从 https://www.example.com/event/abc
抓取数据,那么保存的文件名应该是 example.com
。数据正在以正确的方式抓取,但我没有成功地用正确的文件名保存文件
代码
class myCrawler(CrawlSpider):
name = 'testing'
rotate_user_agent = True
base_url=''
start_urls = []
allowed_domains = ''
handle_httpstatus_list = [404,403]
custom_settings = {
# in order to reduce the risk of getting blocked
'DOWNLOADER_MIDDLEWARES': {'sitescrapper.sitescrapper.middlewares.RotateUserAgentMiddleware': 400,
'sitescrapper.sitescrapper.middlewares.ProjectDownloaderMiddleware': 543, },
'COOKIES_ENABLED': False,
'CONCURRENT_REQUESTS': 6,
'DOWNLOAD_DELAY': 2,
'DEPTH_LIMIT' : 1,
'CELERYD_MAX_TASKS_PER_CHILD' : 1,
# Duplicates pipeline
'ITEM_PIPELINES': {'sitescrapper.sitescrapper.pipelines.DuplicatesPipeline': 300},
# In order to create a CSV file:
'FEEDS': {'%(allowed_domains).csv': {'format': 'csv'}},
}
def __init__(self, category='', **kwargs):
self.base_url = category
self.allowed_domains = ['.'.join(urlparse(self.base_url).netloc.split('.')[-2:])]
self.start_urls.append(self.base_url)
print(f"Base url is {self.base_url} and allowed domain is {self.allowed_domains}")
self.rules = (
Rule(
LinkExtractor(allow_domains=self.allowed_domains),
process_links=process_links,
callback='parse_item',
follow=True
),
)
super().__init__(**kwargs)
提前致谢
如果您在 url ?
上使用 split("\") 函数我们可以使用
指定下载位置和动态设置文件名'FEEDS': {"./scraped_urls/%(file_name)s" : {"format": "csv"}},
在custom_settings